1. 程式人生 > >Qt5之基本對話方塊

Qt5之基本對話方塊

目錄

一、 標準檔案對話方塊

函式說明:

在此僅詳細說明getOpenFileName()靜態函式中各個引數的作用,其他檔案對話方塊類中相關的靜態函式的引數有與其類似之處。

其函式形式如下:

QString QFileDialog::getOpenFileName

( 

  QWidget* parent=0,               //標準檔案對話方塊的父視窗

  const QString & caption=QString(),  //標準檔案對話方塊的標題名

  const QString & dir=QString(),    //(1)

  const QString & filter=QString(),  //(2)

  QString * selectedFilter=0,   //使用者選擇的過濾器通過此引數返回

  Options options=0           //選擇顯示檔名的格式,預設是同時顯示目錄與檔名

)

注:(1)指定了預設的目錄,若此函式帶有檔名,則檔案將是預設選中的檔案。

        (2)此引數對檔案型別進行過濾,只有與過濾器匹配的檔案型別才顯示,可以同時指定多種過濾方式供使用者選擇,多種過濾器之間用“;;”隔開

二、 標準顏色對話方塊類

函式說明:

getColor()函式是標準顏色對話方塊QColorDialog類的一個靜態函式,該函式返回使用者選擇的顏色值,下面是getColor()函式形式:

QColor getColor

(

  const QColor& initial=Qt::white,     //

  QWidget* parent=0               //標準顏色對話方塊的父視窗

);

注:指定了預設選中的顏色,預設為白色。通過QColor::isValid()函式可以判斷使用者選擇的顏色是否有效,但是當用戶選擇檔案時,如果選擇“取消”(Cancel),則QColor::isValid()函式將返回false。

三、標準字型對話方塊類

函式說明:

       getFont()函式是標準字型對話方塊QFontDialog類的一個靜態函式,該函式返回使用者所選擇的字型,下面是getFont()函式形式:

QFont getFont

(

bool* ok,              //注若使用者選擇“ok",則該引數*ok將設為true,函式返回使用者所選擇的字型;否則,將設為false,此時函式返回預設字型

  QWidget* parent=0      //標準字型對話方塊的父視窗

);      

四、標準輸入對話方塊類

        標準輸入對話方塊提供四種資料型別的輸入,包括字串,下拉列表框的條目、int資料型別和double資料型別

1.標準字串輸入對話方塊

標準字串輸入對話方塊通過QInputDialog類的靜態函式getText()完成,getText()函式形式如下:

QString getText

(

  QWidget* parent,           //標準輸入對話方塊的父視窗

  const QString& title,     //標準輸入對話方塊的標題名

  const QString& label,     //標準輸入對話方塊的標籤提示

  QLineEdit::EchoMode mode=QLineEdit::Normal,

     //指定標準輸入對話方塊中QLineEdit控制元件的輸入模式

  const QString& text=QString(), 

//標準字串輸入對話方塊彈出時QLineEdit控制元件中默認出現的文字

  bool* ok=0,                   //

  Qt::WindowFlags flags=0       //指明標準輸入對話方塊的窗體標識

);   

指示標準輸入對話方塊的哪一個按鈕被觸發,若為true,則表示使用者單擊了“OK”(確定)按鈕;若為false,則表示使用者單擊了“Cancel”(取消)按鈕

2.標準條目選擇對話方塊

標準條目選擇對話方塊是通過QInputDialog類的靜態函式getItem()來完成的,getItem()函式形式如下:

QString getItem

(

  QWidget* parent,              //標準輸入對話方塊的父視窗

  const QString& title,         //標準輸入對話方塊的標題名

  const QString& label,         //標準輸入對話方塊的標籤提示

  const QStringList& items,    //(1)指定標準輸入對話方塊中QComboBox控制元件顯示的可選條目為一個QstringList物件。

  int current=0,                 //(2)  標準條目選擇對話方塊彈出時QComboBox控制元件中預設顯示的條目序號。

  bool editable=true,         //指定QComboBox控制元件中顯示的文字是否可編輯

  bool* ok=0,                    //(3)指示標準輸入對話方塊的哪個按鈕被觸發,若oktrue,則表示使用者單擊了“OK”(確定)按鈕;若okfalse,                                                                    //則表示使用者單擊   了“Cancle”(取消)按鈕。

  Qt::WindowFlags flags=0       //指明標準輸入對話方塊的窗體標識

);QString getItem

(

  QWidget* parent,              //標準輸入對話方塊的父視窗

  const QString& title,         //標準輸入對話方塊的標題名

  const QString& label,         //標準輸入對話方塊的標籤提示

  const QStringList& items,    //(1)

  int current=0,                 //(2)

  bool editable=true,         //指定QComboBox控制元件中顯示的文字是否可編輯

  bool* ok=0,                    //(3)

  Qt::WindowFlags flags=0       //指明標準輸入對話方塊的窗體標識

);

3. 標準int型別輸入對話方塊

標準int型別輸入對話方塊是通過QInputDialog類的靜態函式getInt()來完成的,getInt()函式形式如下:

int getInt

(

  QWidget* parent,              //標準輸入對話方塊的父視窗

  const QString& title,         //標準輸入對話方塊的標題名

  const QString& label,         //標準輸入對話方塊的標籤提示

  int value=0,               //指定標準輸入對話方塊中QSpinBox控制元件的預設顯示值

  int min=-2147483647,          //指定QSpinBox控制元件的數值範圍

  int max=2147483647,

  int step=1,                     //指定QSpinBox控制元件的步進值

  bool* ok=0,                     //

  Qt::WindowFlags flags=0      //指明標準輸入對話方塊的視窗標識

);

注:用於指示標準輸入對話方塊的哪個按鈕被觸發。若ok為true,則表示使用者單擊了“OK”(確定);若ok為false,則表示使用者單擊了“Cancel"(取消)按鈕。

4. 標準double型別輸入對話方塊

標準double型別輸入對話方塊是通過QInputDialog類的靜態函式getDouble()來完成的,getDouble()函式形式如下:標準double型別輸入對話方塊是通過QInputDialog類的靜態函式getDouble()來完成的,getDouble()函式形式如下:

double getDouble

(

  QWidget* parent,               //標準輸入對話方塊的父視窗

  const QString& title,         //標準輸入對話方塊的標題名

  const QString& label,     //標準輸入對話方塊的標籤提示

  double value=0,         //指定標準輸入對話方塊中QSpinBox控制元件預設的顯示值

  double min=-2147483647,      //指定QSpinBox控制元件的數值範圍

  double max=2147483647,

  int decimals=1,                //指定QSpinBox控制元件的步進值

  bool* ok=0,                    //

  Qt::WindowFlags flags=0     //指明標準輸入對話方塊的視窗標識

);

注:用於指示標準輸入對話方塊的哪個按鈕被觸發。若ok為true,則表示使用者單擊了“OK”(確定);若ok為false,則表示使用者單擊了“Cancel"(取消)按鈕。

五、訊息對話方塊類
    在實際的程式開發中,經常會用到各種各樣的訊息框來為使用者提供一些提示或提醒,Qt提供了QMessageBox類用於實現此項功能。

常用的訊息對話方塊包括Question訊息框、Information訊息框、Warning訊息框、Critical訊息框、About(關於)Qt訊息對話方塊及Custom(自定義)訊息框。其中,Question訊息框、Informatica訊息框。Warning訊息框和Critical訊息框的用法大同小異。這些訊息框通常都包含為使用者提供一些提醒或一些簡單詢問用的一個圖示。一條提示資訊及若干個按鈕。Question訊息框為正常的操作提供一個簡單的詢問;

Information訊息框為正常的操作提供一個提示;Warning訊息框提醒使用者發生了一個錯誤;Critical訊息框警告使用者發了一個嚴重錯誤。

5.1 Question訊息框

Question訊息框使用QMessageBox::question()函式完成,此函式形式如下:

StandardButton QMessageBox::question

(

  QWidget* parent,                         //訊息框的父視窗指標

  const QString& title,                   //訊息框的標題欄

  const QString& text,                   //訊息框的文字提示資訊

  StandardButtons buttons=Ok,           //(1)

  StandardButton defaultButton=NoButton  //(2)

);

注:(1)填寫希望在訊息框中出現的按鈕,可根據需要在標準按鈕中,選擇,用“|”連寫,預設為QMessageBox::Ok。QMessageBox類提供了許多標準按鈕,如QMessageBox::OK、QMessage::Close、QMessageBox::Discard等。雖然在此可以選擇,但並不是隨意選擇的,應注意按常規成對出現。例如,通常Save與Discard成對出現,而Abort,Retry、Ignore則一起出現。

(2)預設按鈕,即訊息對話框出現時,焦點預設處於哪個按鈕上

5.2  Information訊息框

Information訊息框使用QMessageBox::information()函式完成,函式形式如下:

StandardButton QMessageBox::information

(

  QWidget*parent,                     //訊息框的父視窗指標

  const QString& title,             //訊息框的標題欄

  const QString& text,               //訊息框的文字提示資訊

  StandardButtons buttons=Ok,        //Question訊息框的註釋內容

  StandardButton defaultButton=NoButton  //Question訊息框的註釋內容

);

5.3  Warning訊息框

Warning訊息框使用QMessageBox::warning()函式完成,函式形式如下:

StandardButton QMessageBox::warning

(

  QWidget* parent,             //訊息框的父視窗指標

  const QString& title,       //訊息框的標題欄

  const QString& text,           //訊息框的文字提示資訊

  StandardButtons buttons=Ok,    //Question訊息框的註釋內容

  StandardButton defaultButton=NoButton  //Question訊息框的註釋內容

);

5.4  Critical訊息框

Critical訊息框使用QMessageBox::critical()函式完成,函式形式如下:

StandardButton QMessageBox::critical

(

  QWidget* parent,                //訊息框的父視窗指標

  const QString& title,           //訊息框的標題欄

  const QString& text,            //訊息框的文字提示資訊

  StandardButtons buttons=Ok,    //Question訊息框的註釋內容

  StandardButton defaultButton=NoButton    //Question訊息框的註釋內容

);

5.5  About訊息框

About訊息框使用QMessageBox::about()函式完成,函式形式如下:

void QMessageBox::about

(

  QWidget* parent,             //訊息框的父視窗指標

  const QString& title,             //訊息框的標題欄

  const QString& text          //訊息框的文字提示資訊

);

5.6  About Qt訊息框

About Qt訊息框使用QMessageBox:: aboutQt()函式完成,函式形式如下:
 

void QMessageBox::aboutQt

(

  QWidget* parent,                   //訊息框的父視窗指標

  const QString& title=QString()        //訊息框的標題欄

);

5.7  自定義訊息框

當以上所有訊息框都不能滿足開發的需求時,Qt還允許自定義訊息(Custom)。包括訊息框的圖示、按鈕和內容等都可根據需求進行設定。

下面介紹自定義(Custom)訊息框的具體建立方法。

1)在“dialog.h”中新增private成員變數:

QPushButton *CustomBtn;

QLabel *label;

2)新增槽函式:

void showCustomDlg();

3)在“dialog.cpp”中的建構函式中新增如下程式碼:

CustomBtn =new QPushButton;

CustomBtn->setText(tr("使用者自定義訊息對話方塊例項"));

label =new QLabel;

label->setFrameStyle(QFrame::Panel|QFrame::Sunken);

添加布局管理:

mainLayout->addWidget(CustomBtn,4,0);

mainLayout->addWidget(label,4,1);

Dialog建構函式的最後新增事件關聯程式碼:

connect(CustomBtn,SIGNAL(clicked()),this,SLOT(showCustomDlg()));

其中,“dialog.cpp”檔案中的槽函式showCustomDlg()實現的具體程式碼

在開始部分加上標頭檔案:

#include <QMessageBox>

其中,

(a) QPushButton *yesBtn=customMsgBox.addButton(tr("Yes"),QMessageBox:: ActionRole)定義訊息框所需的按鈕,由於QMessageBox::standardButtons只提供了常用的一些按鈕,並不能滿足所有應用的需求,故QMessageBox類提供了一個addButton()函式來為訊息框增加自定義的按鈕,addButton()函式的第1個引數為按鈕顯示的文字,第2個引數為按鈕型別的描述。

(b) QPushButton *cancelBtn=customMsgBox.addButton(QMessageBox::Cancel)addButton()函式加入一個標準按鈕。

(c) customMsgBox.setText(tr("這是一個使用者自定義訊息框!"))設定自定義訊息框中顯示的提示資訊內容。

(d) customMsgBox.setIconPixmap(QPixmap("Qt.png"))設定自定義訊息框的圖示。



六、綜合例項

部分例項效果

1.dialog.h

#ifndef DIALOG_H

#define DIALOG_H

#include<QGridLayout>

#include<QFileDialog>

#include<QPushButton>

#include<QLineEdit>

#include<QFontDialog>

#include <QColorDialog>

#include"inputdlg.h"

#include "msgboxdlg.h"

#include <QDialog>

class Dialog : public QDialog

{

Q_OBJECT

public:

Dialog(QWidget *parent = 0);

~Dialog();

private:

//標準檔案對話方塊

QPushButton *fileBtn;

QLineEdit *filekLineEdit;

//標準顏色對話方塊

QPushButton *colorBtn;

QFrame *colorFrame;

//標準字型框對話方塊

QPushButton *fontBtn;

QLineEdit *fontLineEdit;

//標準輸入對話方塊

QPushButton *inputBtn;

InputDlg *inputDlg;

//訊息對話方塊

QPushButton *MsgBtn;

MsgBoxDlg *msgDlg;

//自定義訊息對話方塊

QPushButton *CustomBtn;

QLabel *label;

QGridLayout *mainLayout;

private slots:

//檔案對話方塊

void showFile();

//顏色對話方塊

void showColor();

//字型對話方塊

void showFont();

//標準輸入對話方塊

void showInputDlg();

//訊息對話方塊

void showMsgDlg();

//自定義訊息對話方塊

void showCustomDlg();

};

#endif // DIALOG_H

2.inputdlg.h

#ifndef INPUTDLG_H

#define INPUTDLG_H

#include <QObject>

#include<QLabel>

#include<QPushButton>

#include<QGridLayout>

#include<QDialog>

class InputDlg : public QDialog

{

Q_OBJECT

public:

InputDlg();

InputDlg(QWidget* parent=0);

private slots:

void ChangeName();

void ChangeSex();

void ChangeAge();

void ChangeScore();

private:

QLabel *nameLabel1;

QLabel *sexLabel1;

QLabel *ageLabel1;

QLabel *scoreLabel1;

QLabel *nameLabel2;

QLabel *sexLabel2;

QLabel *ageLabel2;

QLabel *scoreLabel2;

QPushButton *nameBtn;

QPushButton *sexBtn;

QPushButton *ageBtn;

QPushButton *

相關推薦

Qt5基本對話方塊

目錄 一、 標準檔案對話方塊類 函式說明: 在此僅詳細說明getOpenFileName()靜態函式中各個引數的作用,其他檔案對話方塊類中相關的靜態函式的引數有與

QT5基本對話方塊 標準顏色對話方塊

QT5基本對話方塊  標準顏色對話方塊 實現的效果如下圖所示: 新建一個Qt Widget Application,專案名為:myDialog,基類選擇QDialog,類名保持Dialog不變,取消“建立介面”複選框的選中狀態。 建立步驟: 1)在Dialog.h中新增p

Qt5_基本對話方塊程式啟動畫面(QSplashScreen)

多數大型應用程式啟動時都會在程式完全啟動前顯示一個啟動畫面,在程式完全啟動後消失。 本節主要介紹在Linux系統中如何實現這一功能。 首先是mainwindow.h檔案,自動生成的程式碼如下: #ifndef MAINWINDOW_H #define M

Qt標準對話方塊(字型對話方塊

字型對話方塊 1、包含標頭檔案 #include < QFontDialog> void Widget::on_FontButton_clicked() { //ok 用

MFC程式設計學習改變對話方塊和控制元件及文字顏色

//程式訊息流:首先對話方塊繪製時,會發送WM_CTLCOLOR訊息,那麼OnCtlColor()函式 //將響應該訊息,程式將用該函式返回的畫刷對控制元件進行繪製。 HBRUSH CSettingDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtl

(shell練習1)zenity圖形介面資訊對話方塊和單複選對話方塊,以及while,for迴圈的練習

涵蓋內容包括 1,shell的while迴圈 2,shell的for迴圈 3,shell關於字串的擷取(精華之處) 4,shell的選擇分支語句if 5,zenity資訊對話方塊 6,zenity單選對話方塊 7,zenity複選對話方塊  8,shell不

Revit開發選項對話方塊擴充套件

Revit裡有一個選項介面 這個選項介面裡預設包括了: 常規、使用者介面、圖形、檔案位置、等等 其實這個介面是可以擴充套件的 直接上程式碼:         public Result E

MFC學習筆記對話方塊中使用定時器

MFC菜鳥第一次發貼,請各位高人指教:我需要做一個基於對話方塊的程式,主對話方塊TimerTryDlg上就兩個按鈕,確定鈕按下後執行訊息處理OnFirstOK(),先初始化定時器,再開啟有模式對話方塊TestDlg,定時器時間到了執行OnTimer-在子對話方塊上的一個靜態控制元件上畫點,但OnTimer在

AndroidBuilder對話方塊的一些常用方式

    Android為我們提供幾種對話方塊,主要有:AlertDialog、ProgressDialog、DataPickerDialog、TimePickerDialog。     AlertDialog,是具有0-3個按鈕,還可以可以放置選項、複選框單選框或自定義佈局等

C#訊息對話方塊

定義:  訊息對話方塊是一個預定義對話方塊,主要用於向用戶顯示與應用程式相關的資訊以及來自使用者的請求資訊,在.NET框架中,使用MessageBox類表示訊息對話方塊,通過呼叫該類的Show方法可以顯示訊息對話方塊,該方法有多種過載形式。用處:通過訊息對話方塊去選擇頁面的跳

qt學習各種對話方塊的實現

1 目的:實現1 顏色對話方塊 2  實現顏色標準對話方塊 3 實現字型標準對話方塊 4 實現標準輸入對話方塊 5 實現標準訊息對話方塊 6 實現自定義對話方塊  程式碼實現 dialog.h #ifndef DIALOG_H #define DIALOG_H #incl

MFC對話方塊新增變數

進來一直在學MFC,現在基本都在VS2008下練習寫一些小程式,偶爾也會在VC6.0下,很多教程都是在VC6.0下寫的程式碼,但是做一個大工程的話,個人感覺VS還是比較好的。 順便也發表一下自己的觀點。帶實驗的時候看到一些剛接觸C語言的同學就用VS,他們毫無程式設計經驗,

Qt5 模態對話方塊/非模態對話方塊/訊息對話方塊/檔案對話方塊

Qt  模態對話方塊/非模態對話方塊/訊息對話方塊/檔案對話方塊 結果截圖: 原始碼: #include "huamainwindow.h" #include <QMenuBar> #include <QMenu> #incl

Qt標準對話方塊(檔案對話方塊

檔案對話方塊 目錄 檔案對話方塊(單檔案) 1、包含標頭檔案 #include< QFileDialog> void Widget::on_FileButton

android Dialog對話方塊(簡易版)

實際效果:例項程式碼:後臺邏輯:package com.example.tf.dialog_demo; import android.content.DialogInterface; import android.support.v7.app.AlertDialog; im

Java提示對話方塊的使用!...

btnNewButton.addMouseListener(new MouseAdapter() {public void mouseClicked(MouseEvent e) {//錯誤對話方塊JOptionPane.showMessageDialog(null,    "這是一個錯誤對話方塊",    "

Qt標準對話方塊(顏色對話方塊)

顏色對話方塊 目錄 顏色對話方塊 1、在標頭檔案中包含 #include < QColorDialog > void Widget::on_ColorButton_clicked() { QColor col

jquery-easy dialog對話方塊基本用法

首先引入相關的css 和 js檔案 <link href="css/themes/default/easyui.css" rel="stylesheet" type="text/css" /> <link href="css/themes/icon.css"

Qt5建立標準字型對話方塊(QFontDialog類)

接續上節:https://blog.csdn.net/xunye_dream/article/details/83003316 標頭檔案: #ifndef DIALOG_H #define DIALOG_H #include <QDialog> class QPushBu

Android對話方塊的使用

一.對話方塊 對話方塊:就是在當前Activity之上顯示的小視窗,用於和使用者間進行資訊互動。對話方塊通常用來作為提示或直接與程式執行相關的短暫停留介面。 ** 二、AlertDialog可以實現大部分和使用者互動的對話方塊 ** 為了建立一個AlertDialog