Qt中常用的對話方塊總結QDialog
一般對話方塊和QWidget看起來差別不大,不過還是有不同點的;
1.模態對話方塊,在模態對話方塊中,exec有自己的訊息迴圈;並且把app的訊息迴圈接管了;也就是當顯示該對話方塊的時候不能去點選其它視窗部件;
2.如果Dialog通過exec來顯示,那麼可以通過accept或者reject來關閉視窗
如果Dialog通過show來顯示,那麼可以通過close來關閉視窗,這個和QWidget是一樣的;
有許多的特殊dialog;列印預覽,檔案選擇,messagebox, 顏色選擇,字型選擇,列印;//這些對話方塊都是系統的對話方塊
3.相同之處包括都可以在部件上面用QPainter畫;
mydialog.h
#ifndef MYDIALOG_H
#define MYDIALOG_H
#include <QDialog>
class MyDialog : public QDialog
{
Q_OBJECT
public:
explicit MyDialog(QWidget *parent = 0);
void paintEvent(QPaintEvent *);
QString _strDir;//開啟的目錄,如果是空的,那麼開啟當前專案所在資料夾
signals:
public slots:
void slotButtonClick();
};
#endif // MYDIALOG_H
mydialog.cpp
#include "mydialog.h"
#include <QPushButton>
#include <QDebug>
#include <QFileDialog>//檔案對話方塊
#include <QFileInfo>
#include <QCalendarWidget>
#include <QColorDialog>//顏色選擇對話方塊
#include <QFontDialog>//字型對話方塊
#include <QMessageBox>//訊息對話方塊
#include <QPainter>
MyDialog::MyDialog(QWidget *parent) :
QDialog(parent)
{
QPushButton * button = new QPushButton("Click me", this);
button->setGeometry(150, 100, 80, 30);
connect(button, SIGNAL(clicked()), this, SLOT(slotButtonClick()));
}
void MyDialog::slotButtonClick()
{
#if 0
QDialog *dig = new QDialog();
int ret;
QPushButton *button = new QPushButton(dig);
//connect(button, SIGNAL(clicked()), dig, SLOT(accept()));//傳送accept訊號,來關閉視窗
connect(button, SIGNAL(clicked()), dig, SLOT(reject()));//傳送reject訊號,來關閉視窗
/*
如果Dialog通過exec來顯示,那麼可以通過accept或者reject來關閉視窗
如果Dialog通過show來顯示,那麼可以通過close來關閉視窗,這個和QWidget是一樣的;
有許多的特殊dialog;列印預覽,檔案選擇,messagebox, 顏色選擇,字型選擇,列印;//這些對話方塊都是系統的對話方塊
*/
ret = dig->exec();
if(ret == QDialog::Accepted){
qDebug() << "Accepted";
}
if(ret == QDialog::Rejected){
qDebug() << "Rejected";
}
// dig.exec();//模態對話方塊,在模態對話方塊中,exec有自己的訊息迴圈;並且把app的訊息迴圈接管了;
#endif
#if 0
//儲存檔案的對話方塊
QString filename = QFileDialog::getSaveFileName(NULL, "select a file to save", _strDir, "Png file(*png)");
#endif
#if 0
QString filename = QFileDialog::getOpenFileName(NULL, "select a directory to open", _strDir, "Png file(*png)");
#endif
#if 0
QString filename = QFileDialog::getExistingDirectory();
if(filename.isEmpty()){
//沒有選擇
return;
}
qDebug() << filename << endl;
QFileInfo fileInfo(filename);
_strDir = fileInfo.filePath();
#endif
#if 0
QColorDialog colorDialog;
colorDialog.exec();
QColor color = colorDialog.selectedColor();
qDebug() << color;
#endif
#if 0
QFontDialog fontDialog;
fontDialog.exec();
QFont font = fontDialog.selectedFont();
qDebug() << font;
#endif
#if 0
QMessageBox::warning(this, "Error", "Error mesg...");
#endif
#if 0
QMessageBox::critical(this, "Critical", "Critical error..");
#endif
int ret = QMessageBox::question(this, "this", "realy do.....", QMessageBox::Yes | QMessageBox::No | QMessageBox::YesToAll| QMessageBox::NoAll);//還可以新增選項
if (ret == QMessageBox::No){
qDebug() << "No";
}
if(ret == QMessageBox::Yes){
qDebug() << "Yes";
}
if(ret == QMessageBox::YesToAll){
qDebug() << "YesToAll";
}
}
/*畫Dialog部件,和Widget是一樣的*/
void MyDialog::paintEvent(QPaintEvent *)
{
QPainter p(this);
p.setPen(Qt::red);
p.drawLine(QPointF(10, 10), QPointF(50, 50));
p.setBrush(Qt::yellow);
p.drawRect(QRect(100, 140, 200, 200));
}
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MyDialog d;
d.setGeometry(400, 300, 400, 400);
d.show();
app.exec();
}
1.新的對話方塊
2.儲存檔案的對話方塊
3.開啟檔案的對話方塊
4.顏色選擇對話方塊
5.字型選擇對話方塊
6.警告提示對話方塊
7.嚴重錯誤警告
8.詢問對話方塊
9.用QPainter繪製的視窗(一條線,一個矩形)
相關文章
- Qt 對話方塊新增工具欄QT
- 如何自學qt(4)——對話方塊QT
- QT 等待對話方塊/進度QT
- QT常用控制元件(一)——選單欄和對話方塊QT控制元件
- Qt標準對話方塊實現QT
- React中的模式對話方塊React模式
- c#中的模態對話方塊和非模態對話方塊C#
- 常用元件 / 對話方塊及選單元件
- android常用對話方塊封裝Android封裝
- Qt下的模態和非模態對話方塊QT
- javascript中的彈出對話方塊JavaScript
- VUE:點選開啟的對話方塊外面時,對話方塊總是被關閉Vue
- C/C++ Qt Dialog 對話方塊元件應用C++QT元件
- C++ Qt開發:標準Dialog對話方塊元件C++QT元件
- C++ Qt開發:自定義Dialog對話方塊元件C++QT元件
- 對話方塊中對成批控制元件的操作 (轉)控制元件
- 對話方塊函式函式
- 登入對話方塊
- Java 中彈出對話方塊的幾種方式Java
- C/C++ Qt 自定義Dialog對話方塊元件應用C++QT元件
- [MFC]選擇目錄對話方塊和選擇檔案對話方塊
- flutter demo (四):對話方塊Flutter
- Javascript檔案對話方塊JavaScript
- 一個Flex 對話方塊的坑Flex
- Android AlterDialog 常用對話方塊使用方法詳解Android
- 【Qt 專欄】檔案對話方塊 檔案的彈窗選擇-QFileDialogQT
- 總結:在一個工程中新增別的工程的中已建立好的對話方塊資源。(或是。。。) (轉)
- 在 Flutter 使用 GetX 對話方塊Flutter
- android 多項對話方塊Android
- Android Dialog對話方塊Android
- DialogPane對話方塊佈局
- 【轉】QT中QWidget、QDialog及QMainWindow的區別QTAI
- 視窗和對話方塊居中對齊
- JavaFX 如何使用內建的對話方塊Java
- 如何在 Bash Shell 指令碼中顯示對話方塊指令碼
- Flutter Widgets 對話方塊-DialogFlutter
- TWebBrowser禁止彈出Alert對話方塊Web
- JavaScript彈出儲存對話方塊JavaScript