2.关于QT中的Dialog(模态窗口),文件选择器,颜色选择器,字体选择器,消息提示窗口
1
新建一个空项目
A
编写 .pro文件
|
QT HEADERS MyDialog.h SOURCES MyDialog.cpp |
B
编写MyDialog.h
|
#ifndef #define #include class { Q_OBJECT public: explicit QString void signals: public void }; #endif |
C
编写:MyDialog.cpp
#include "MyDialog.h" #include <QPushButton> #include <QDebug> #include <QFileDialog> #include <QFileInfo> #include <QColorDialog> #include <QFontDialog> #include <QMessageBox> #include <QPainter> #include <QApplication> MyDialog::MyDialog(QWidget *parent) : QDialog(parent) {
QPushButton* button = new QPushButton("Click me",this);
connect(button, SIGNAL(clicked()), this, SLOT(slotButtonClick())); } void MyDialog::slotButtonClick() {
#if 0 QDialog* dlg = new QDialog; int ret; QPushButton* button = new QPushButton(dlg); connect(button, SIGNAL(clicked()), dlg, SLOT(reject())); /* * 在模态对话框中,exec有自己的消息循环,并且把app的消息循环接管了 * 如果Dialog是通过exec来显示,那么可以通过accepted或者rejected来关闭 * 窗口,如果Dialog是通过show来显示,那么可以通过close来关闭窗口, * 这个和QWidget一样的 * * 有许多特殊的dailog:文件选择,MessageBox,颜色选择,字体选择,打印预览,打印 */ ret = dlg->exec(); if(ret == QDialog::Accepted) {
qDebug() << "accepted"; } if(ret == QDialog::Rejected) {
qDebug() << "rejected"; } //上面的运行结果如下: #endif #if 0 //通过下面的方式打开保存文件 QString strFilename = QFileDialog::getSaveFileName( NULL, "Select file for save", _strDir, "pic file (*.png *.jpg)"); //运行结果: #endif #if 0 //打开一个文件 #endif #if 0 //选择一个存在的文件夹 QString strFilename = QFileDialog::getExistingDirectory(); if(strFilename.isEmpty()) {
qDebug() << "select none"; return; } qDebug() << strFilename; QFileInfo fileInfo(strFilename); _strDir = fileInfo.filePath(); #endif #if 0 //颜色选择框 QColorDialog color; color.exec(); QColor c = color.selectedColor(); #endif #if 0 //字体选择器 QFontDialog fontDialog; fontDialog.exec(); QFont font = fontDialog.selectedFont(); #endif #if 0 //MessageBox,消息提示窗口 int ret = QMessageBox::question(this, "????", "realy do .......", QMessageBox::Yes| QMessageBox::No| QMessageBox::YesAll| QMessageBox::NoAll); if(ret == QMessageBox::Yes) {
qDebug() << "user select yes"; } if(ret == QMessageBox::No) {
qDebug() << "user select no"; } #endif } void MyDialog::paintEvent(QPaintEvent *) {
QPainter p(this); p.drawLine(QLine(0,0,200,200)); } int main(int argc,char* argv[]) {
QApplication app(argc,argv); MyDialog dlg; dlg.show(); return app.exec(); } |
2.关于QT中的Dialog(模态窗口),文件选择器,颜色选择器,字体选择器,消息提示窗口的更多相关文章
- Swift-打开其它Storyboard中的自定义模态窗口
本文的方法针对OS X应用开发. 如果想在某个ViewController中,用模态窗口的方式,打开某个Storyboard中定义的WindowController.可用以下方式. let story ...
- Qt中使用DOM解析XML文件或者字符串二(实例)
介绍 在Qt中提供了QtXml模块实现了对XML数据的处理,我们在Qt帮助中输入关键字QtXml Module,可以看到该模块的类表.在这里我们可以看到所有相关的类,它们主要是服务于两种操作XML文档 ...
- Qt中的非模式窗口配置;
Test7_5A::Test7_5A(QWidget *parent) : QMainWindow(parent){ ui.setupUi(this); m_searchwin = new Searc ...
- Qt中使用DOM解析XML文件或者字符串(实例)
因为需要读取配置文件,我的配置文件采用xml:因此编写了使用qt读取xml文件内容的代码,xml文件如下: <?xml version="1.0" encoding=&quo ...
- 19.QT对话框(文件对话框,颜色对话框,字体框,自定义对话框)
文件对话框 #include<QFileDialog> //文件对话框 void Dialog::on_pushButton_clicked() { //定义显示文件的类型 窗口标题 可供 ...
- Qt5:Qt中屏幕或窗口截图功能的实现
要想在Qt中实现屏幕或窗口截图功能 ,通常有两种方法: 1 -- 使用 QPixmap 类 2 -- 使用 QScreen类 然而虽然俩两种方法用到的类不相同,但是调用到的类成员函数的函数名称和参 ...
- [Win32]创建模态窗口
http://www.cnblogs.com/zplutor/archive/2011/02/20/1958973.html 在Win32编程中,如果要显示一个模态窗口,一般是先创建对话框模板,然后使 ...
- qt中建立图片资源文件
qt中如果你要添加图片资源文件我们需要执行以下步骤: (1)先找好一张图片,这里就不多说了,网上资源很多. (2)把我们找好的文件统一放到一个文件夹,然后拉到工程文件所在的文件夹下 (3)在qt中新建 ...
- iOS:视图切换的第一种方式:模态窗口
一.UIModalController:模态窗口(一个控制器模态出另一个控制器的模态窗口) 当我们在view controller A中模态显示view controller B的时候,A就充当pre ...
随机推荐
- hihocoder 1388 fft循环矩阵
#1388 : Periodic Signal 时间限制:5000ms 单点时限:5000ms 内存限制:256MB 描述 Profess X is an expert in signal proce ...
- 【USACO15FEB】审查(黄金)Censoring (Gold)
题目描述 Farmer John has purchased a subscription to Good Hooveskeeping magazine for his cows, so they h ...
- SPFA小总结
关于spfa 知识点 原始版 ---裸 应用: 一.判负环 两种方法 1.跑单源点bfs,如果某一个点入队了n-1次,存在 2.对于每个点dfs,如果此源点反被其他点更新,存在 证明:点i作为源点,d ...
- 实现string类
/* 实现string类 */ class String { public: String(const char *str=NULL); //构造函数 S ...
- C语言作业程序设计第一次作业
1.求圆面积和面积 (1)题目: 输入圆的半径,计算圆的周长和面积 (2)流程图: (3)测试数据及运行结果 测试数据:r=4 运行结果: (4)实验分析 没有遇到问题 2.判断闰年问题 (1)题目: ...
- MySQL数据库将多条记录的单个字段合并成一条记录
原SQL AND acc.id = accRole.acc_id) AND accRole.role_id = T_PM_ROLE.id ORDER BY acc.id 结果,有一个人有两个角色,如果 ...
- gulp将多张小图自动合成雪碧图
最近一直在做移动端的改版项目,做之前老大就跟我说了好几次,说这次改版一定要用雪碧图减少一个页面的图片的请求次数,能加快页面的加载速度就一定要加快,我说可以.因为之前的项目开发时间过短,也没有时间去慢慢 ...
- npm ERR! Windows_NT 10.0.10586
安装vue脚手架时候一直失败,如图: npm cache clean 管理员下安装: 快捷键 win +x , 按A进入:
- 毕业回馈-89c51之定时器/计数器(Timer/Count)
今天分享的是89c51系列单片机的内部资源定时器/计数器,在所有的嵌入式系统中都包含这两个内部功能. 首先先了解几个定时器/计数器相关的概念: •时钟周期:时钟周期 T 是时序中最小的时间单位,具体计 ...
- Node.js Domain 模块
Node.js Domain(域) 简化异步代码的异常处理,可以捕捉处理try catch无法捕捉的异常.引入 Domain 模块 语法格式如下: var domain = require(" ...