当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:54:00  来源:本站整理

<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++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .