標準對話方塊(QMessageBox)
阿新 • • 發佈:2019-02-13
所謂標準對話方塊,是 Qt 內建的一系列對話方塊,用於簡化開發。事實上,有很多對話方塊都是通用的,比如開啟檔案、設定顏色、列印設定等。這些對話方塊在所有程式中幾乎相同,因此沒有必要在每一個程式中都自己實現這麼一個對話方塊。
Qt 的內建對話方塊大致分為以下幾類:
QColorDialog:選擇顏色;
QFileDialog:選擇檔案或者目錄;
QFontDialog:選擇字型;
QInputDialog:允許使用者輸入一個值,並將其值返回;
QMessageBox:模態對話方塊,用於顯示資訊、詢問問題等;
QPageSetupDialog :為印表機提供紙張相關的選項;
QPrintDialog:印表機配置;
QPrintPreviewDialog:列印預覽;
QProgressDialog:顯示操作過程。
這裡我們簡單地介紹一下標準對話方塊 QMessageBox 的使用。在前面有了關於對話方塊的基礎之上,應該可以結合文件很輕鬆地學習如何使用 Qt 的標準對話方塊。
QMessageBox 用於顯示訊息提示。我們一般會使用其提供的幾個 static 函式:
void about(QWidget * parent, const QString & title, const QString & text):顯示關於對話方塊。這是一個最簡單的對話方塊,其標題是 title,內容是 text,父視窗是 parent。對話方塊只有一個 OK 按鈕 。
StandardButton question(QWidget * parent, const QString & title, const QString& text, StandardButtons buttons = StandardButtons( Yes | No ), StandardButtondefaultButton = NoButton): QMessageBox::question()函式與
QMessageBox::critical()類似,不同之處在於這個對話方塊提供一個問號圖示,並且其顯示的按鈕是“是”和“否”兩個。
StandardButton warning(QWidget * parent, const QString & title, const QString& text, StandardButtons buttons = Ok, StandardButton defaultButton =NoButton): QMessageBox::warning()函式與 QMessageBox::critical()類似,不同之處在於這個對話方塊提供一個黃色歎號圖示。
Qt 的內建對話方塊大致分為以下幾類:
QColorDialog:選擇顏色;
QFileDialog:選擇檔案或者目錄;
QFontDialog:選擇字型;
QInputDialog:允許使用者輸入一個值,並將其值返回;
QMessageBox:模態對話方塊,用於顯示資訊、詢問問題等;
QPageSetupDialog
QPrintDialog:印表機配置;
QPrintPreviewDialog:列印預覽;
QProgressDialog:顯示操作過程。
這裡我們簡單地介紹一下標準對話方塊 QMessageBox 的使用。在前面有了關於對話方塊的基礎之上,應該可以結合文件很輕鬆地學習如何使用 Qt 的標準對話方塊。
QMessageBox 用於顯示訊息提示。我們一般會使用其提供的幾個 static 函式:
void about(QWidget * parent, const QString & title, const QString & text):顯示關於對話方塊。這是一個最簡單的對話方塊,其標題是 title,內容是 text,父視窗是 parent。對話方塊只有一個 OK 按鈕
void aboutQt(QWidget * parent, const QString & title = QString()):顯示關於 Qt對話方塊。該對話方塊用於顯示有關 Qt 的資訊。
StandardButton critical(QWidget * parent, const QString & title, const QString& text, StandardButtons buttons = Ok, StandardButton defaultButton =NoButton):顯示嚴重錯誤對話方塊。這個對話方塊將顯示一個紅色的錯誤符號 。我們可以通過
buttons 引數指明其顯示的按鈕。預設情況下只有一個 Ok 按鈕,我們可以使用 StandardButtons 型別指定多種按鈕。
StandardButton question(QWidget * parent, const QString & title, const QString& text, StandardButtons buttons = StandardButtons( Yes | No ), StandardButtondefaultButton = NoButton): QMessageBox::question()函式與
QMessageBox::critical()類似,不同之處在於這個對話方塊提供一個問號圖示,並且其顯示的按鈕是“是”和“否”兩個。
StandardButton warning(QWidget * parent, const QString & title, const QString& text, StandardButtons buttons = Ok, StandardButton defaultButton =NoButton): QMessageBox::warning()函式與 QMessageBox::critical()類似,不同之處在於這個對話方塊提供一個黃色歎號圖示。
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QPushButton>
#include <QMessageBox>
class MainWindow : public QMainWindow
{
Q_OBJECT
private slots:
void click();
private:
QPushButton *btn;
QMessageBox *msg;
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
this->setWindowTitle("呵呵");
this->setMinimumSize(300,300);
btn=new QPushButton(this);
btn->setText(tr("哈哈"));
btn->move(100,100);
connect(btn,&QPushButton::clicked,this,&MainWindow::click);//定義槽函式
}
void MainWindow::click(){
/*
* msgBox 是一個建立在棧上的 QMessageBox 例項。我們設定其標題為“檔案已經被修改”,
* setInformativeText 則是會在對話方塊中顯示的文字。下面我們使用了一個 detailedText,
* 也就是詳細資訊,當我們點選了詳細資訊按鈕時,對話方塊可以自動顯示更多資訊。我們自己定義的
* 對話方塊的按鈕有三個:儲存、丟棄和取消。然後我們使用了 exec() 是其成為一個模態對話方塊,
* 根據其返回值進行相應的操作。
*/
msg=new QMessageBox(this);
msg->setWindowTitle("標準對話方塊");
msg->setText(tr("檔案已經被修改"));
msg->setInformativeText(tr("你想儲存嗎?"));
msg->setDetailedText(tr("呵呵"));
msg->setStandardButtons(QMessageBox::Save|QMessageBox::Discard|QMessageBox::Cancel);
msg->setDefaultButton(QMessageBox::Save);//預設選中的按鈕,高亮顯示
int ret=msg->exec();
switch (ret) {
case QMessageBox::Save:
qDebug()<<"儲存";//資料傳輸到控制檯顯示
break;
case QMessageBox::Discard:
qDebug()<<"丟棄";
break;
case QMessageBox::Cancel:
qDebug()<<"取消";
break;
}
}
MainWindow::~MainWindow()
{
}