2.关于QT中的Dialog(模态窗口),文件选择器,颜色选择器,字体选择器,消息提示窗口
生活随笔
收集整理的這篇文章主要介紹了
2.关于QT中的Dialog(模态窗口),文件选择器,颜色选择器,字体选择器,消息提示窗口
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 新建一個空項目
A 編寫 .pro文件
| QT += gui widgets ? HEADERS += \ ??? MyDialog.h ? SOURCES += \ ??? MyDialog.cpp |
B 編寫MyDialog.h
| #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 |
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(模态窗口),文件选择器,颜色选择器,字体选择器,消息提示窗口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么本科毕业生考军校要通过司级一下部队
- 下一篇: 3.关于QT中的MainWindow窗口