<b>Qt学习之路(15):Qt尺度对话框之QFileDialog</b>[VC/C++编程]
本文“<b>Qt学习之路(15):Qt尺度对话框之QFileDialog</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
下面还是按照我们的进度,从Qt的尺度对话框开始说起.所谓尺度对话框,其实就是Qt内置的一些对话框,比方文件挑选、颜色挑选等等.本日首先介绍一下QFileDialog.
QFileDialog是Qt顶用于文件翻开和保存的对话框,相当于Swing里面的JFileChooser.下面翻开我们前面利用的工程.我们已经很有先见之明的写好了一个翻开的action,还记得前面的代码吗?当时,我们只是弹出了一个消息对话框(这也是一种尺度对话框哦~)用于奉告这个信号槽已经联通,目前我们要写真正的翻开代码了!
改正MainWindow的open函数:
void MainWindow::open()
{
QString path = QFileDialog::getOpenFileName(this, tr("Open Image"), ".", tr("Image Files(*.jpg *.png)"));
if(path.length() == 0) {
QMessageBox::information(NULL, tr("Path"), tr("You didn't select any files."));
} else {
QMessageBox::information(NULL, tr("Path"), tr("You selected ") + path);
}
}
编译之前别忘掉include QFileDialog哦!然后运行一下吧!点击翻开按钮,就会弹出翻开对话框,然后挑选文件大概直接点击撤消,会有呼应的消息提醒.
QFileDialog供应了很多静态函数,用于获得用户挑选的文件.这里我们利用的是getOpenFileName(), 也就是“获得翻开文件名”,你也可以查看API找到更多的函数利用.不过,这个函数的参数蛮长的,并且范例都是QString,并不好记.考虑到这种情形,Qt供应了别的的写法:
QFileDialog *fileDialog = new QFileDialog(this);
fileDialog->setWindowTitle(tr("Open Image"));
fileDialog->setDirectory(".");
fileDialog->setFilter(tr("Image Files(*.jpg *.png)"));
if(fileDialog->exec() == QDialog::Accepted) {
QString path = fileDialog->selectedFiles()[0];
QMessageBox::information(NULL, tr("Path"), tr("You selected ") + path);
} else {
QMessageBox::information(NULL, tr("Path"), tr("You didn't select any files."));
}
不过,这两种写法固然功效差别不大,但是弹出的对话框却并不一样.getOpenFileName()函数在Windows和MacOS X平台上供应的是本地的对话框,而QFileDialog供应的始终是Qt自己绘制的对话框(还记得前面说过,Qt的组件和Swing近似,也是自己绘制的,而不都是调用系统资源API).
为了阐明QFileDialog::getOpenFileName()函数的用法,还是先把函数签名放在这里:
QString QFileDialog::getOpenFileName (
QWidget * parent = 0,
const QString & caption = QString(),
const QString & dir = QString(),
const QString & filter = QString(),
QString * selectedFilter = 0,
Options options = 0 )
第一个参数parent,用于指定父组件.注意,很多Qt组件的构造函数城市有这么一个parent参数,并供应一个默许值0;
第二个参数caption,是对话框的标题;
第三个参数dir,是对话框显示时默许翻开的目录,"." 代表程序运行目录,"/" 代表当前盘符的根目录(Windows,Linux下/就是根目录了),也可以是平台相关的,比方"C:\\"等;
第四个参数filter,是对话框的后缀名过滤器,比方我们利用"Image Files(*.jpg *.png)"就让它只能显示后缀名是jpg大概png的文件.假如需求利用多个过滤器,利用";;"分割,比方"JPEG Files(*.jpg);;PNG Files(*.png)";
第五个参数selectedFilter,是默许挑选的过滤器;
第六个参数options,是对话框的一些参数设定,比方只显示文件夹等等,它的取值是enum QFileDialog::Option,每个选项可以利用 | 运算组合起来.
假如我要想挑选多个文件怎么办呢?Qt供应了getOpenFileNames()函数,其返回值是一个QStringList.你可以把它理解成一个只能存放QString的List,也就是STL中的list<string>.
好了,我们已经可以挑选翻开文件了.保存也是近似的,QFileDialog类也供应了保存对话框的函数getSaveFileName,具体利用还是请查阅API.
出处:http://devbean.blog.51cto.com/448512/213414
以上是“<b>Qt学习之路(15):Qt尺度对话框之QFileDialog</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |