最近在学习Qt框架,今天学习了一下消息框的使用, 现整理出来以作记录。
在程序运行时,经常需要提示用户一些信息,比如警告啊,提示啊,建议啊之类的东西。这些东西基本上是通过消息框与用户进行交互的,Qt中主要是用QMessageBox类来加以实现的。
消息框一般分为七种:
- Question询问消息框:为正常的操作提供一个简单的询问
- Information信息消息框:为正常操作提供一个提示
- Warning提示消息框:提醒用户发生了一个错误
- Critical警告消息框:警告用户发生了一个严重错误
- About关于消息框:自定义的关于信息
- AboutQt关于Qt消息框:Qt自身的关于信息
- Custom自定义消息框:自己定制消息框
具体用法见源码以及分析:
Dialog.pro
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#-------------------------------------------------
#
# Project created by QtCreator 2015-10-24T17:32:35
#
#-------------------------------------------------
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = Dialog
TEMPLATE = app
SOURCES += main.cpp
dialog.cpp
HEADERS += dialog.h
|
dialog.h
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#ifndefDIALOG_H
#defineDIALOG_H
#include<QDialog>
#include<QGridLayout>
#include<QPushButton>
#include<QLabel>
#include<QMessageBox>
class Dialog: public QDialog
{
Q_OBJECT
public :
Dialog(QWidget *parent = 0);
~Dialog();
public : //配置部件和布局
QLabel *label;
QPushButton *QuestionBtn,*InformationBtn,*WarningBtn,*CriticalBtn,*AboutBtn,*AboutQtBtn,*CustomBtn;
QGridLayout *layout,*layoutLabel,*layoutBtn;
protected slots: //各种按钮的槽
void slotQuestion();
void slotInformation();
void slotWarning();
void slotCritical();
void slotAbout();
void slotAboutQt();
void slotCustom();
};
#endif// DIALOG_H
|
dialog.cpp
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
#include"dialog.h"
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
{
setWindowTitle( "QMessageBox" );
QuestionBtn= new QPushButton( "Question" );
InformationBtn= new QPushButton( "Information" );
WarningBtn= new QPushButton( "Warning" );
CriticalBtn= new QPushButton( "Critical" );
AboutBtn= new QPushButton( "About" );
AboutQtBtn= new QPushButton( "AboutQt" );
CustomBtn= new QPushButton( "Custom" );
label= new QLabel( "About Qt MessageBox:" );
layout= new QGridLayout( this );
layoutLabel= new QGridLayout;
layoutBtn= new QGridLayout;
layoutLabel->addWidget(label,0,0);
layoutBtn->addWidget(QuestionBtn,1,0);
layoutBtn->addWidget(InformationBtn,1,1);
layoutBtn->addWidget(WarningBtn,2,0);
layoutBtn->addWidget(CriticalBtn,2,1);
layoutBtn->addWidget(AboutBtn,3,0);
layoutBtn->addWidget(AboutQtBtn,3,1);
layoutBtn->addWidget(CustomBtn,4,0);
layoutBtn->setSpacing(15);
//嵌套布局
layout->addLayout(layoutLabel,0,0);
layout->addLayout(layoutBtn,1,0);
setFixedSize(300,220); //固定大小
connect(QuestionBtn,SIGNAL(clicked()), this ,SLOT(slotQuestion()));
connect(InformationBtn,SIGNAL(clicked()), this ,SLOT(slotInformation()));
connect(WarningBtn,SIGNAL(clicked()), this ,SLOT(slotWarning()));
connect(CriticalBtn,SIGNAL(clicked()), this ,SLOT(slotCritical()));
connect(AboutBtn,SIGNAL(clicked()), this ,SLOT(slotAbout()));
connect(AboutQtBtn,SIGNAL(clicked()), this ,SLOT(slotAboutQt()));
connect(CustomBtn,SIGNAL(clicked()), this ,SLOT(slotCustom()));
}
Dialog::~Dialog()
{
}
//直接调用AboutQt,设置句柄和标题即可
void Dialog::slotAboutQt(){
QMessageBox::aboutQt( this , "This is the title" );
}
//以下三个函数均是设置句柄标题和信息即可,也可以在最后设置默认按钮,一般默认的是QMessageBox::Ok。
void Dialog::slotAbout(){
QMessageBox::about( this , "About" , "This is the label." );
}
void Dialog::slotCritical(){
QMessageBox::critical( this , "Critical" , "This is the label." );
}
void Dialog::slotInformation(){
QMessageBox::information( this , "Information" , "This is the label." );
}
//自定义消息框
void Dialog::slotCustom(){
QMessageBox customMsgBox;
customMsgBox.setWindowTitle( "Custom message box" );
//添加按键
QPushButton *lockBtn=customMsgBox.addButton( "Lock" ,QMessageBox::ActionRole);
QPushButton *unlockBtn=customMsgBox.addButton( "Unlock" ,QMessageBox::ActionRole);
QPushButton *cancelBtn=customMsgBox.addButton(QMessageBox::Cancel); //注意cancel不能指定Text
//customMsgBox.setIconPixmap(QPixmap("a.png"));//设置图片
customMsgBox.setText( "This is the label" );
customMsgBox.exec(); //执行消息框
QPushButton *msg=(QPushButton*)customMsgBox.clickedButton(); //接受按键信息
//判断按键
if (msg==lockBtn)
label->setText( "Custom button /lock" );
if (msg==unlockBtn)
label->setText( "Custom button /unlock" );
if (msg==cancelBtn)
label->setText( "Custom button /cancel" );
}
void Dialog::slotQuestion(){
//QMessageBox::**question()**函数,传入句柄,标题,文本,按钮值,返回按键对应的值,最后也可以加默认按键的位置
int msg=QMessageBox::question( this , "Question" , "This is the label." ,QMessageBox::Ok|QMessageBox::Cancel);
//判断选择信息
switch (msg){
case QMessageBox::Ok:
label->setText( "Question button /OK" );
break ;
case QMessageBox::Cancel:
label->setText( "Question button /Cancel" );
break ;
default :
break ;
}
}
void Dialog::slotWarning(){
//QmessageBox::warning()函数同Question函数
int msg=QMessageBox::warning( this , "Question" , "This is the label." ,QMessageBox::Save|QMessageBox::Discard|QMessageBox::Cancel,QMessageBox::Save);
switch (msg){ //判断选择信息
case QMessageBox::Save:
label->setText( "Warning button /Save" );
break ;
case QMessageBox::Cancel:
label->setText( "Warning button /Cancel" );
break ;
case QMessageBox::Discard:
label->setText( "Warning button /Discard" );
break ;
default :
break ;
}
}
|
##main.cpp
?
1
2
3
4
5
6
7
8
9
10
11
|
#include"dialog.h"
#include<QApplication>
int main(intargc, char *argv[])
{
QApplicationa(argc, argv);
Dialog w;
w.show();
return a.exec();
}
|
运行截图
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。
相关文章
猜你喜欢
- 64M VPS建站:是否适合初学者操作和管理? 2025-06-10
- ASP.NET自助建站系统中的用户注册和登录功能定制方法 2025-06-10
- ASP.NET自助建站系统的域名绑定与解析教程 2025-06-10
- 个人服务器网站搭建:如何选择合适的服务器提供商? 2025-06-10
- ASP.NET自助建站系统中如何实现多语言支持? 2025-06-10
TA的动态
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
您的支持,是我们最大的动力!
热门文章
-
2025-05-29 53
-
2025-05-27 19
-
WPCOM2022年双11特惠活动 WordPress主题买一送一
2025-05-25 79 -
2025-05-25 55
-
2025-05-24 91
热门评论