一起看代码来玩玩QT之11 Dialog
2016-02-28 16:31
363 查看
MyDialog.h
MyDialog.cpp
#ifndef MYDIALOG_H #define MYDIALOG_H #include <QDialog> class MyDialog : public QDialog { Q_OBJECT public: explicit MyDialog(QWidget *parent = 0); QString _strDir; void paintEvent(QPaintEvent *); signals: public slots: void slotButtonClick(); }; #endif // MYDIALOG_H
MyDialog.cpp
#include "MyDialog.h" #include <QPushButton> #include <QDebug> #include <QFileDialog> #include <QFileInfo> #include <QColorDialog> #include <QFontDialog> #include <QMessageBox> #include <QPainter> 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())); ret = dlg->exec(); // 在模块对话框中,exec有自己的消息循环,并且把app的消息循环接管了 // 如果Dialog是通过exec来显示,那么可以通过accept或者reject来关闭窗口 // 如果Dialog是通过show来显示,那么可以通过close来关闭窗口,这个和QWidget一样的 // 有许多特殊的dailog:文件选择,MessageBox,颜色选择,字体选择,打印预览,打印 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 QString strFilename = QFileDialog::getOpenFileName(NULL, "Select file for open", _strDir, "pic file (*.png *.jpg)"); #endif #if 0 QString strFilename = QFileDialog::getExistingDirectory(); if(strFilename.isEmpty()) { qDebug() << "select none"; return; } qDebug() << strFilename; QFileInfo fileInfo(strFilename); _strDir = fileInfo.filePath(); //制造默认目录 #endif // do something for io ... #if 0 QColorDialog color; color.exec(); QColor c = color.selectedColor(); #endif #if 0 QFontDialog fontDialog; fontDialog.exec(); QFont font = fontDialog.selectedFont(); #endif 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"; } } void MyDialog::paintEvent(QPaintEvent *) { QPainter p(this); p.drawLine(QLine(0, 0, 200, 200)); } #include <QApplication> int main(int argc, char* argv[]) { QApplication app(argc, argv); MyDialog dlg; dlg.show(); return app.exec(); }
相关文章推荐
- Qt使用的几个问题
- QT中关于JSON处理的几个类
- 使用qt时出现找不到模块错误
- Qt 下使用OpenCV
- QT Json解析方法
- VS集成Qt环境搭建
- spoj:QTREE3
- SPOJ QTREE 树链剖分
- Qt5获取系统文件图标,文件路径
- PyQt4百行代码自制密码管理器(一):基本框架搭建
- QtMultiMedia 之 Camera
- QtMultiMedia 之 CameraFocus
- QtMultiMedia 之 CameraImageProcessing
- QML 中的 Qt.include
- Qtcreator中经常使用快捷键总结
- 在ubuntu系统安装配置QT
- win7下安装QT开源库qwt
- 五子棋评分表算法
- QT自定义窗口标题栏实现拖动双击放大缩小
- [视觉算法] 妙算上cuda、opencv以及qt的配置