当前位置:天才代写 > tutorial > C语言/C++ 教程 > Qt进修之路(15):Qt尺度对话框之QFileDialog

Qt进修之路(15):Qt尺度对话框之QFileDialog

2017-11-05 08:00 星期日 所属: C语言/C++ 教程 浏览:398

下面照旧凭据我们的进度,从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

 

    关键字:

天才代写-代写联系方式