ubuntu 中的qt怎么调用graphics.h_Qt 标准对话框之 QFileDialog
Qt 标准对话框之 QFileDialog
《Qt 学习之路》已经写到了第15篇,然而现在再写下去却有点困难,原因是当初并没有想到会连续的写下去,因此并没有很好的计划这些内容究竟该怎样去写。虽然前面说过,本教程主要线路参考《C++ Gui Programming with Qt 4, 2nd Edition》,然而最近的章节由于原文是一个比较完整的项目而有所改变,因此现在不知道该从何写起。我并不打算介绍很多组件的使用,因为 Qt 有很多组件,各种组件用法众多,根本不可能介绍完,只能把API 放在手边,边用边查。所以,对于很多组件我只是简单的介绍一下,具体用法还请自行查找(确切地说,我知道的也并不多,很多时候还是要到 API 里面去找)。下面还是按照我们的进度,从 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。好了,我们已经能够选择打开文件了。保存也是类似的,QFileDialog 类也提供了保存对话框的函数getSaveFileName,具体使用还是请查阅 API。
ubuntu 中的qt怎么调用graphics.h_Qt 标准对话框之 QFileDialog相关推荐
- 在Win10的Linux子系统Ubuntu中使用Qt
在Win10的Linux子系统Ubuntu中使用Qt 陈拓 2021/07/26-2021/07/26 1. 概述 在<Win10的Linux子系统Ubuntu安装图形界面> https: ...
- Ubuntu中安装Qt
文章目录 Ubuntu中安装必要的软件 安装流程 配置 运行 配置运行 Ubuntu中安装必要的软件 主要为了打开图形程序 sudo apt-get update sudo apt-get --ass ...
- Qt基础:六、标准对话框
1.颜色对话框 添加#include<QColorDialog>头文件 颜色对话框类QColorDialog 提供了一个可以获取指定颜色的对话框部件. 下面创建一个颜色对话框. QColo ...
- Qt学习笔记-5-Qt标准对话框之QFileDialog
所谓标准对话框,其实就是 Qt 内置的一些对话框,比如文件选择.颜色选择等等. QFileDialog 是 Qt 中用于文件打开和保存的对话框. 之前写的openAction只是弹出了一个消息对话框, ...
- Ubuntu中基于QT的系统网线连接状态的实时监视
1.必要准备 需包: #include <QNetworkInterface> 2.实现获取当前的网线连接状态 以下是自己在网络上搜到的一个解决方法,且没有加入iface.flags(). ...
- QT每日一练day4:ubuntu中使用QT
(本文主要是为了说明QT的跨平台特性) 一.安装QT sudo apt-get install qt5-default qtcreator cmake 二.打开QT 可以点击图标或命令行方式: 三 ...
- Qt中标准对话框实例,QObject::tr()的作用
函数 tr()全名是QObject::tr(),被它处理的 字符串可以 使用工具提 取出来翻译 成其他语言, 也就是做国际化使用. 只要记住,Qt 的最佳实践:如果你想让你的程序国际化的话,那么,所有 ...
- 【ubuntu】在ubuntu上安装QT
(1)在64位的ubuntu中安装QT (1.1)下载QT 如:qt-opensource-linux-x64-5.10.1.run QT网址1 QT网址2 (1.2)安装QT chmod +x q ...
- 【Qt教程】1.11 - Qt5 标准对话框QMessageBox(关于、错误、信息、警告、问题、颜色、字体、文件对话框)
所谓标准对话框,是Qt内置的一些列对话框,用于简化开发.其实是调用的系统窗口.事实上,有很多对话框都是通用的,比如打开文件.设置颜色.打印设置等.这些对话框在素有程序中几乎相同,因此没有必要在每一个程 ...
最新文章
- [BZOJ2938]:[Poi2000]病毒
- Bzoj3530: [Sdoi2014]数数
- js-权威指南学习笔记18
- cmakelist官方教程_CMakeLists.txt文件如何编写?(一 基础篇)
- Mysql数据库有两种安装方法
- HASH暴力破解工具-Hashcat
- (笔试题)和0交换的排序
- C语言二叉树实验报告流程图,二叉树的建立与遍历实验报告(c语言编写,附源代码).doc...
- WPS Office文档未保存怎么恢复
- Android IDA 动态调试最完善攻略,跨过各种坑
- DBSCAN聚类算法C++实现
- 小米系统服务器,小米服务框架
- kafka从入门到精通:马士兵java集合
- 学校计算机管理员安全责任书,实验室管理员安全责任书
- 百度网盘断点续传下载工具IDM
- Android仿IOS屏幕亮度调节-自定义view系列(5)
- webpack搭建pixi.js开发环境
- Unity3D手游开发日记(3) - 场景加载进度条的完美方案
- 对话哈佛大学教授Lukin:量子计算将在我们有生之年普及! | AI英雄
- Android9.0支持exFat格式u盘识别
热门文章
- exchange无法收发邮件_SpringBoot2.x系列教程69--SpringBoot中整合邮件发送
- Qt中qDebug()技巧初探
- iphone导出通讯录到安卓_科技资讯:iPhone苹果手机换新机如何将旧手机的通讯录导出到新的...
- 破解密码高手王小云教授简介
- 【CQOI2009】叶子的颜色
- 城市问题(Floyd)
- Codeforces 1106F Lunar New Year and a Recursive Sequence (数学、线性代数、线性递推、数论、BSGS、扩展欧几里得算法)...
- fpga实战训练精粹pdf_tensorflow版PSENet 文本检测模型训练和测试
- c mssql mysql_mssql与mysql 数据迁移
- 20211217 为什么正定矩阵的主子式都是正的?(注意是主子式,不止是顺序主子式)