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(); } |