1、第第4章章 Qt 5基本对话框基本对话框Qt 5基本对话框首先介绍标准文件对话框(QFileDialog)、标准颜色对话框(QColorDialog)、标准字体对话框(QFontDialog)、标准输入对话框(QInputDialog)及标准消息对话框(QMessageBox),运行效果如图4.1所示。Qt 5基本对话框按如图4.1所示依次执行如下操作。(1)单击“文件标准对话框实例”按钮,弹出“文件选择”对话框(open file dialog),如图4.2所示。选中的文件名所在目录路径将显示在图4.1中该按钮右侧的标签中。Qt 5基本对话框(2)单击“颜色标准对话框实例”按钮,弹出“颜色选
2、择”(Select Color)对话框,如图4.3所示。选中的颜色将显示在图4.1中该按钮右侧的标签中。(3)单击“字体标准对话框实例”按钮,弹出“字体选择”(Select Font)对话框,如图4.4所示。选中的字体将应用于如图4.1所示中该按钮右侧显示的文字。Qt 5基本对话框(4)标准输入对话框包括:标准字符串输入对话框、标准条目选择对话框、标准int类型输入对话框和标准double类型输入对话框。单击“标准输入对话框实例”按钮,弹出“标准输入对话框实例”界面,如图4.5(a)所示。在“标准输入对话框实例”界面中,若调用“修改姓名”输入框,则为一个QLineEdit,如图4.5(b)所示
3、;若调用“修改性别”列表框,则为一个QComboBox,如图4.5(c)所示;若调用“修改年龄”(int类型)或“修改成绩”(double类型)输入框,则为一个QSpinBox,如图4.5(d)和图4.5(e)所示。每种标准输入对话框都包括一个确定输入(“OK”)按钮和一个取消输入(“Cancel”)按钮。Qt 5基本对话框(5)单击“标准消息对话框实例”按钮,弹出“标准消息对话框实例”界面,如图4.6(a)所示。“标准消息对话框实例”界面包括Question消息框,如图4.6(b)所示;Information消息框,如图4.6(c)所示;Warning消息框,如图4.6(d)所示;Criti
4、cal消息框,如图4.6(e)所示;About消息框,如图4.6(f)所示;About Qt消息框,如图4.6(g)所示。(a)入口界面 (b)Question消息框(c)Information消息框 (d)Warning消息框Qt 5基本对话框 (e)Critical消息框 (f)About消息框 (g)About Qt消息框Qt 5基本对话框(6)如果以上所有的标准消息框都不能满足开发的需求,则下面介绍Qt允许的Custom(自定义)消息框的使用方法。单击“用户自定义消息对话框实例”按钮,弹出“用户自定义消息框”界面,如图4.7所示。Qt 5基本对话框各种标准基本对话框通过调用各自不同的静
5、态函数来完成其功能,具体说明见表4.1。相 关 类类 说 明静 态 函 数函 数 说 明QFileDialog类标准文件对话框getOpenFileName获得用户选择的文件名getSaveFileName获得用户保存的文件名getExistingDirectory获得用户选择的已存在的目录名getOpenFileNames获得用户选择的文件名列表QColorDialog类标准颜色对话框getColor获得用户选择的颜色值QFontDialog类标准字体对话框getFont获得用户选择的字体QInputDialog类标准输入对话框getText标准字符串输入对话框getItem下拉表条目输入框
6、getIntint类型数据输入对话框getDoubledouble类型数据输入对话框QMessageBox类标准消息对话框QMessageBox:questionQuestion消息框QMessageBox:informationInformation消息框QMessageBox:warningWarning消息框QMessageBox:criticalCritical消息框QMessageBox:aboutAbout消息框QMessageBox:aboutQtAbout Qt消息框Qt 5基本对话框【例】【例】(难度一般)(CH401)完成如图4.1所示的界面显示。操作步骤如下。新建Qt W
7、idgets Application,项目名为“DialogExample”,基类选择“QDialog”,类名保持“Dialog”不变,取消取消“创建界面”复选框的选中状态。在“dialog.cpp”文件中的Dialog 的构造函数中应该添加如下代码:setWindowTitle(tr(各种标准对话框的实例);以便能够显示该工程的对话框标题。以下所有程序中凡在用到某个Qt类库时,都要将该类所在的库文件包括到该工程中,将不再重复说明。第第4章章 Qt 5基本对话框基本对话框标准文件对话框类标准文件对话框类0101函函 数数 说说 明明函函 数数 说说 明明QFileDialog类的几个静态函数见
8、表4.1,用户通过这些函数可以很方便地定制自己的文件对话框。其中,getOpenFileName()静态函数返回用户选择的文件名。但是,当用户选择文件时,若选择“取消”(Cancel),则返回一个空串。在此仅详细说明getOpenFileName()静态函数中各个参数的作用,其他文件对话框类中相关的静态函数的参数有与其类似之处。其函数形式如下:QString QFileDialog:getOpenFileName(QWidget*parent=0,/标准文件对话框的父窗口const QString&caption=QString(),/标准文件对话框的标题名const QString&dir=
9、QString(),/注(1)const QString&filter=QString(),/注(2)QString*selectedFilter=0,/用户选择的过滤器通过此参数返回Options options=0 /选择显示文件名的格式,默认是同时显示目录与文件名)0202创创 建建 步步 骤骤创创 建建 步步 骤骤(1)在“dialog.h”中,添加private成员变量如下:QPushButton*fileBtn;QLineEdit*fileLineEdit;QGridLayout*mainLayout;(2)添加槽函数:private slots:void showFile();在
10、开始部分添加头文件:#include#include 创创 建建 步步 骤骤(3)在“dialog.cpp”文件的构造函数中添加如下代码:fileBtn=new QPushButton;/各个控件对象的初始化fileBtn-setText(tr(文件标准对话框实例);fileLineEdit=new QLineEdit;/用来显示选择的文件名添加布局管理:mainLayout=new QGridLayout(this);/布局设计mainLayout-addWidget(fileBtn,0,0);mainLayout-addWidget(fileLineEdit,0,1);最后添加事件关联:c
11、onnect(fileBtn,SIGNAL(clicked(),this,SLOT(showFile();/事件关联其中,槽函数showFile()的具体实现代码如下:创创 建建 步步 骤骤void Dialog:showFile()QString s=QFileDialog:getOpenFileName(this,open file dialog,/,C+files(*.cpp);C files(*.c);Head files(*.h);fileLineEdit-setText(s);在“dialog.cpp”文件的开始部分添加头文件:#include#include#include(4)
12、运行该程序后,单击“文件标准对话框实例”按钮后显示的界面如图4.2所示。选择某个文件,单击“打开”按钮,此文件名及其所在目录将显示在Dialog对话框右边的标签中。第第4章章 Qt 5基本对话框基本对话框标准颜色对话框类标准颜色对话框类0101函函 数数 说说 明明函函 数数 说说 明明getColor()函数是标准颜色对话框QColorDialog类的一个静态函数,该函数返回用户选择的颜色值。下面是getColor()函数形式:QColor getColor(const QColor&initial=Qt:white,/注QWidget*parent=0 /标准颜色对话框的父窗口);0202
13、创创 建建 步步 骤骤创创 建建 步步 骤骤下面是创建一个标准颜色对话框的详细步骤。(1)在“dialog.h”中,添加private成员变量如下:QPushButton*colorBtn;QFrame*colorFrame;(2)添加槽函数:void showColor();(3)在“dialog.cpp”文件的构造函数中添加如下代码:colorBtn=new QPushButton;/创建各个控件的对象colorBtn-setText(tr(颜色标准对话框实例);colorFrame=new QFrame;colorFrame-setFrameShape(QFrame:Box);color
14、Frame-setAutoFillBackground(true);创创 建建 步步 骤骤其中,QFrame类的对象colorFrame用于根据用户选择的不同颜色更新不同的背景。在布局管理中添加代码:mainLayout-addWidget(colorBtn,1,0);/布局设计mainLayout-addWidget(colorFrame,1,1);最后添加事件关联:connect(colorBtn,SIGNAL(clicked(),this,SLOT(showColor();/事件关联其中,槽函数showColor()的实现代码如下:void Dialog:showColor()QColo
15、r c=QColorDialog:getColor(Qt:blue);if(c.isValid()colorFrame-setPalette(QPalette(c);(4)在文件的开始部分添加头文件:#include(5)运行该程序后,单击“颜色标准对话框实例”按钮后显示的界面如图4.3所示。选择某个颜色,单击“OK”按钮,选择的颜色将显示在Dialog对话框右边的标签中。第第4章章 Qt 5基本对话框基本对话框标准字体对话框类标准字体对话框类0101函函 数数 说说 明明函函 数数 说说 明明getFont()函数是标准字体对话框QFontDialog类的一个静态函数,该函数返回用户所选择的
16、字体,下面是getFont()函数形式:QFont getFont(bool*ok,/注QWidget*parent=0 /标准字体对话框的父窗口);0202创创 建建 步步 骤骤创创 建建 步步 骤骤下面是创建标准字体对话框的详细步骤。(1)在“dialog.h”中,添加private成员变量如下:QPushButton*fontBtn;QLineEdit*fontLineEdit;(2)添加槽函数:void showFont();(3)在“dialog.cpp”文件的构造函数中添加如下代码:fontBtn=new QPushButton;/创建控件的对象fontBtn-setText(tr
17、(字体标准对话框实例);fontLineEdit=new QLineEdit;/显示更改的字符串fontLineEdit-setText(tr(Welcome!);添加布局管理:mainLayout-addWidget(fontBtn,2,0);/布局设计mainLayout-addWidget(fontLineEdit,2,1);最后添加事件关联:connect(fontBtn,SIGNAL(clicked(),this,SLOT(showFont();/事件关联创创 建建 步步 骤骤其中,槽函数showFont()的实现代码如下:void Dialog:showFont()bool ok;
18、QFont f=QFontDialog:getFont(&ok);if(ok)fontLineEdit-setFont(f);(4)在文件的开始部分添加头文件:#include(5)运行该程序后,单击“字体标准对话框实例”按钮后显示的界面如图4.4所示。选择某个字体,单击“OK”按钮,文字将应用选择的字体格式更新显示在Dialog对话框右边的标签中。第第4章章 Qt 5基本对话框基本对话框标准输入对话框类标准输入对话框类标准输入对话框类标准输入对话框类标准输入对话框提供四种数据类型的输入,包括字符串、下拉列表框的条目、int数据类型和double数据类型。下面的例子演示了各种标准输入框的使用方
19、法,首先完成界面的设计。具体操作步骤如下。(1)在“DialogExample”项目名上单击鼠标右键,在弹出的快捷菜单中选择“添加新文件.”选项,在弹出的对话框中选择“C+Class”选项,单击“Choose.”按钮,在弹出的对话框的“Base class”文本框中输入基类名“QDialog”(需要由用户手动输入),在“Class name”文本框中输入类的名称“InputDlg”。(2)单击“下一步”按钮,单击“完成”按钮,在该工程中就添加了“inputdlg.h”头文件和“inputdlg.cpp”源文件。(3)打开“inputdlg.h”头文件,完成所需要的各种控件的创建和各种功能的槽函
20、数的声明,具体代码。(4)打开“inputdlg.cpp”源文件,完成所需要的各种控件的创建和槽函数的实现,具体代码。标准输入对话框类标准输入对话框类完成主对话框的操作过程如下。(1)在“dialog.h”中,添加头文件:#include inputdlg.h添加private成员变量:QPushButton*inputBtn;添加实现标准输入对话框实例的InputDlg类:InputDlg*inputDlg;(2)添加槽函数:void showInputDlg();标准输入对话框类标准输入对话框类(3)在“dialog.cpp”文件的构造函数中添加如下代码:inputBtn=new QPus
21、hButton;/创建控件的对象inputBtn-setText(tr(标准输入对话框实例);添加布局管理:mainLayout-addWidget(inputBtn,3,0);/布局设计最后添加事件关联:connect(inputBtn,SIGNAL(clicked(),this,SLOT(showInputDlg();/事件关联其中,槽函数showInputDlg()的实现代码如下:void Dialog:showInputDlg()inputDlg=new InputDlg(this);inputDlg-show();(4)运行该程序后,单击“标准输入对话框实例”按钮后显示的界面如图4.
22、5(a)所示。0101标准字符串输入对话框标准字符串输入对话框标准字符串输入对话框标准字符串输入对话框标准字符串输入对话框通过QInputDialog类的静态函数getText()完成,getText()函数形式如下:QString getText(QWidget*parent,/标准输入对话框的父窗口const QString&title,/标准输入对话框的标题名const QString&label,/标准输入对话框的标签提示QLineEdit:EchoMode mode=QLineEdit:Normal,/指定标准输入对话框中QLineEdit控件的输入模式const QString&t
23、ext=QString(),/标准字符串输入对话框弹出时QLineEdit控件中默认出现的文字bool*ok=0,/注Qt:WindowFlags flags=0 /指明标准输入对话框的窗体标识);标准字符串输入对话框标准字符串输入对话框接着上述的程序,完成“inputdlg.cpp”文件中的槽函数ChangeName()的实现。具体代码如下:void InputDlg:ChangeName()bool ok;QString text=QInputDialog:getText(this,tr(标准字符串输入对话框),tr(请输入姓名:),QLineEdit:Normal,nameLabel2-
24、text(),&ok);if(ok&!text.isEmpty()nameLabel2-setText(text);在“inputdlg.cpp”文件的开始部分添加头文件:#include 再次运行程序,单击“修改姓名”按钮后出现对话框,可以在该对话框内修改姓名,如图4.5(b)所示。0202标准条目选择对话框标准条目选择对话框标准条目选择对话框标准条目选择对话框标准条目选择对话框是通过QInputDialog类的静态函数getItem()来完成的,getItem()函数形式如下:QString getItem(QWidget*parent,/标准输入对话框的父窗口const QString&
25、title,/标准输入对话框的标题名const QString&label,/标准输入对话框的标签提示const QStringList&items,/注(1)int current=0,/注(2)bool editable=true,/指定QComboBox控件中显示的文字是否可编辑bool*ok=0,/注(3)Qt:WindowFlags flags=0 /指明标准输入对话框的窗体标识);标准条目选择对话框标准条目选择对话框(2)标准条目选择对话框弹出时QComboBox控件中默认显示的条目序号。(3)指示标准输入对话框的哪个按钮被触发,若ok为true,则表示用户单击了“OK”(确定)按
26、钮;若ok为false,则表示用户单击了“Cancle”(取消)按钮。同上,接着上述的程序,完成“inputdlg.cpp”文件中的槽函数ChangeSex()的实现。具体代码如下:void InputDlg:ChangeSex()QStringList SexItems;SexItems tr(男)setText(SexItem);再次运行程序,单击“修改性别”按钮后出现对话框,可以在该对话框内选择性别,如图4.5(c)所示。0303标准标准int类型输入对话框类型输入对话框标准标准int类型输入对话框类型输入对话框标准int类型输入对话框是通过QInputDialog类的静态函数getIn
27、t()来完成的,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 /指明标准输入对话框的窗口标识
28、);标准标准int类型输入对话框类型输入对话框同上,接着上述的程序,完成“inputdlg.cpp”文件中的槽函数ChangeAge()的实现。具体代码如下:void InputDlg:ChangeAge()bool ok;int age=QInputDialog:getInt(this,tr(标准int类型输入对话框),tr(请输入年龄:),ageLabel2-text().toInt(&ok),0,100,1,&ok);if(ok)ageLabel2-setText(QString(tr(%1).arg(age);再次运行程序,单击“修改年龄”按钮后出现对话框,可以在该对话框内修改年龄,如
29、图4.5(d)所示。0404标准标准double类型输入对话框类型输入对话框标准标准double类型输入对话框类型输入对话框标准double类型输入对话框是通过QInputDialog类的静态函数getDouble()来完成的,getDouble()函数形式如下:double getDouble(QWidget*parent,/标准输入对话框的父窗口const QString&title,/标准输入对话框的标题名const QString&label,/标准输入对话框的标签提示double value=0,/指定标准输入对话框中QSpinBox控件默认的显示值double min=-21474
30、83647,/指定QSpinBox控件的数值范围double max=2147483647,int decimals=1,/指定QSpinBox控件的步进值bool*ok=0,/注Qt:WindowFlags flags=0 /指明标准输入对话框的窗口标识);标准标准double类型输入对话框类型输入对话框同上,接着上述的程序,完成“inputdlg.cpp”文件中槽函数ChangeScore()的实现。具体代码如下:void InputDlg:ChangeScore()bool ok;double score=QInputDialog:getDouble(this,tr(标准double类型
31、输入对话框),tr(请输入成绩:),scoreLabel2-text().toDouble(&ok),0,100,1,&ok);if(ok)scoreLabel2-setText(QString(tr(%1).arg(score);再次运行程序,单击“修改成绩”按钮后出现对话框,可以在该对话框内修改成绩,如图4.5(e)所示。第第4章章 Qt 5基本对话框基本对话框消息对话框类消息对话框类消息对话框类消息对话框类下面的例子演示了各种消息对话框的使用。首先完成界面的设计,具体实现步骤如下。(1)添加该工程的提供主要显示标准消息对话框界面的函数所在的文件,在“DialogExample”项目名上单
32、击鼠标右键,在弹出的快捷菜单中选择“添加新文件.”选项,在弹出的对话框中选择“C+Class”选项,单击“Choose.”按钮,在弹出的对话框的“Base class”下拉列表框中输入基类名“QDialog”,在“Class name”文本框中输入类的名称“MsgBoxDlg”。(2)单击“下一步”按钮,单击“完成”按钮,在该工程中就添加了“msgboxdlg.h”头文件和“msgboxdlg.cpp”源文件。(3)打开“msgboxdlg.h”头文件,完成所需要的各种控件的创建和完成功能的槽函数的声明,具体代码。(4)打开“msgboxdlg.cpp”源文件,完成所需要的各种控件的创建和完成
33、槽函数的实现,具体代码。消息对话框类消息对话框类下面是完成主对话框的操作过程。(1)在“dialog.h”中,添加头文件:#include msgboxdlg.h添加private成员变量如下:QPushButton *MsgBtn;添加实现各种消息对话框实例的MsgBoxDlg类:MsgBoxDlg*msgDlg;(2)添加槽函数:void showMsgDlg();(3)在“dialog.cpp”文件的构造函数中添加如下代码:MsgBtn=new QPushButton;/创建控件对象MsgBtn-setText(tr(标准消息对话框实例);添加布局管理:mainLayout-addWid
34、get(MsgBtn,3,1);最后添加事件关联:connect(MsgBtn,SIGNAL(clicked(),this,SLOT(showMsgDlg();其中,槽函数showMsgDlg()的实现代码如下:void Dialog:showMsgDlg()msgDlg=new MsgBoxDlg();msgDlg-show();(4)运行该程序后,单击“标准消息对话框实例”按钮后,显示效果如图4.6(a)所示。消息对话框类消息对话框类0101Question消息框消息框Question消息框消息框Question消息框使用QMessageBox:question()函数完成,该函数形式如下
35、: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、QMessa
36、geBox:Close、QMessageBox:Discard等。虽然在此可以选择,但并不是随意选择的,应注意按常规成对出现。例如,通常Save与Discard成对出现,而Abort、Retry、Ignore则一起出现。(2)默认按钮,即消息框出现时,焦点默认处于哪个按钮上。Question消息框消息框实现文件“msgboxdlg.cpp”中的槽函数showQuestionMsg(),具体代码如下:void MsgBoxDlg:showQuestionMsg()label-setText(tr(Question Message Box);switch(QMessageBox:question(
37、this,tr(Question消息框),tr(您现在已经修改完成,是否要结束程序?),QMessageBox:Ok|QMessageBox:Cancel,QMessageBox:Ok)case QMessageBox:Ok:label-setText(Question button/Ok);break;case QMessageBox:Cancel:label-setText(Question button/Cancel);break;default:break;return;在“msgboxdlg.cpp”的开始部分添加头文件:#include 运行程序,单击“QuestionMsg”按钮
38、后,显示效果如图4.6(b)所示。0202Information消息框消息框Information消息框消息框Information消息框使用QMessageBox:information()函数完成,该函数形式如下:StandardButton QMessageBox:information(QWidget*parent,/消息框的父窗口指针const QString&title,/消息框的标题栏const QString&text,/消息框的文字提示信息StandardButtons buttons=Ok,/同Question消息框的注释内容StandardButton defaultBu
39、tton=NoButton/同Question消息框的注释内容);完成文件“msgboxdlg.cpp”中的槽函数showInformationMsg(),具体代码如下:void MsgBoxDlg:showInformationMsg()label-setText(tr(Information Message Box);QMessageBox:information(this,tr(Information消息框),tr(这是Information消息框测试,欢迎您!);return;运行程序,单击“InformationMsg”按钮后,显示效果如图4.6(c)所示。0303Warning消息
40、框消息框Warning消息框消息框Warning消息框使用QMessageBox:warning()函数完成,该函数形式如下:StandardButton QMessageBox:warning(QWidget*parent,/消息框的父窗口指针const QString&title,/消息框的标题栏const QString&text,/消息框的文字提示信息StandardButtons buttons=Ok,/同Question消息框的注释内容StandardButton defaultButton=NoButton/同Question消息框的注释内容);实现文件“msgboxdlg.cp
41、p”中的槽函数showWarningMsg(),具体代码。运行程序,单击“WarningMsg”按钮后,显示效果如图4.6(d)所示。0404Critical消息框消息框Critical消息框消息框Critical消息框使用QMessageBox:critical()函数完成,该函数形式如下:StandardButton QMessageBox:critical(QWidget*parent,/消息框的父窗口指针const QString&title,/消息框的标题栏const QString&text,/消息框的文字提示信息StandardButtons buttons=Ok,/同Quest
42、ion消息框的注释内容StandardButton defaultButton=NoButton /同Question消息框的注释内容);实现文件“msgboxdlg.cpp”中的槽函数showCriticalMsg(),具体代码如下:void MsgBoxDlg:showCriticalMsg()label-setText(tr(Critical Message Box);QMessageBox:critical(this,tr(Critical消息框),tr(这是一个Critical消息框测试!);return;运行程序,单击“CriticalMsg”按钮后,显示效果如图4.6(e)所示。
43、0505About消息框消息框About消息框消息框About消息框使用QMessageBox:about()函数完成,该函数形式如下:void QMessageBox:about(QWidget*parent,/消息框的父窗口指针const QString&title,/消息框的标题栏const QString&text /消息框的文字提示信息);实现文件“msgboxdlg.cpp”中的槽函数showAboutMsg(),具体代码如下:void MsgBoxDlg:showAboutMsg()label-setText(tr(About Message Box);QMessageBox:a
44、bout(this,tr(About消息框),tr(这是一个About消息框测试!);return;运行程序,单击“AboutMsg”按钮后,显示效果如图4.6(f)所示。0606About Qt消息框消息框About Qt消息框消息框About Qt消息框使用QMessageBox:aboutQt()函数完成,该函数形式如下:void QMessageBox:aboutQt(QWidget*parent,/消息框的父窗口指针const QString&title=QString()/消息框的标题栏);实现文件“msgboxdlg.cpp”中的槽函数showAboutQtMsg(),具体代码如
45、下:void MsgBoxDlg:showAboutQtMsg()label-setText(tr(About Qt Message Box);QMessageBox:aboutQt(this,tr(About Qt消息框);return;运行程序,单击“AboutQtMsg”按钮后,显示效果如图4.6(g)所示。第第4章章 Qt 5基本对话框基本对话框自定义消息框自定义消息框自定义消息框自定义消息框(1)在“dialog.h”中添加private成员变量:QPushButton*CustomBtn;QLabel*label;(2)添加槽函数:void showCustomDlg();(3)在
46、“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(showCu
47、stomDlg();自定义消息框自定义消息框其中,“dialog.cpp”文件中的槽函数showCustomDlg()实现的具体代码如下:void Dialog:showCustomDlg()label-setText(tr(Custom Message Box);QMessageBox customMsgBox;customMsgBox.setWindowTitle(tr(用户自定义消息框);/设置消息框的标题 QPushButton*yesBtn=customMsgBox.addButton(tr(Yes),QMessageBox:ActionRole);/(a)QPushButton*n
48、oBtn=customMsgBox.addButton(tr(No),QMessageBox:ActionRole);QPushButton*cancelBtn=customMsgBox.addButton(QMessageBox:Cancel);/(b)customMsgBox.setText(tr(这是一个用户自定义消息框!);/(c)customMsgBox.setIconPixmap(QPixmap(Qt.png);/(d)customMsgBox.exec();/显示此自定义消息框 if(customMsgBox.clickedButton()=yesBtn)label-setTex
49、t(Custom Message Box/Yes);if(customMsgBox.clickedButton()=noBtn)label-setText(Custom Message Box/No);if(customMsgBox.clickedButton()=cancelBtn)label-setText(Custom Message Box/Cancel);return;在开始部分添加头文件:#include 自定义消息框自定义消息框其中,其中,(a)QPushButton*yesBtn=customMsgBox.addButton(tr(Yes),QMessageBox:Action
50、Role):定义消息框所需的按钮,由于QMessageBox:standardButtons只提供了常用的一些按钮,并不能满足所有应用的需求,故QMessageBox类提供了一个addButton()函数来为消息框增加自定义的按钮,addButton()函数的第1个参数为按钮显示的文字,第2个参数为按钮类型的描述。(b)QPushButton*cancelBtn=customMsgBox.addButton(QMessageBox:Cancel):为add Button()函数加入一个标准按钮。消息框将会按调用addButton()函数的先后顺序在消息框中由左至右地依次插入按钮。(c)cust