首页| 论坛| 消息

标题:【摘录】《KDE2/Qt编程金典》第四章:显示弹出式对话框——4.8 由KDialogBase派生而来的KMessageBox对话框
作者:XChinux
日期:2005-10-30 11:17
内容:

由KDialogBase派生而来的KMessageBox对话框
  非常普遍的一种对话框是只显示一行或者两行文本,用户用简单的"是"或者"不是"来响应对话框,或者简单地点击按钮关闭对话框.KDialogBase类有一个构造函数特别适用于编写消息对话框,KMessageBox类使用这种特殊的构造函数来实现一组经常使用的消息对话框.
  这些消息对话框都是模式对话框,模式对话框等待用户做出响应,在没有响应之前用户不能离开.具体地讲,也就是每个对话框都是由简单的函数调用弹出的,在用户响应并且关闭对话框之前,程序一直处于阻塞状态(没有返回给调用者).这样简化了编程,因为只是向静态函数中的任意点简单地插入一个调用而已.
  下面的例子举例说明了9个对话框.在窗口的下部,有一条标签,无论何时有来自对话框的响应,标签的文本就会被更新
Mainline
1 /* main.cpp */
2 #include
3 #include
4 #include “mboxes.h”
5
6 int main(int argc,char **argv)
7 {
8 KCmdLineArgs::init(argc,argv,”mboxes”,
9 “Message Boxes”,”0.0”);
10 KApplication app;
11 Mboxes mboxes;
12 mboxes.show();
13 app.setMainWidget(&mboxes);
14 return(app.exec());
15 }
主程序创建了一个MBoxs对象,将它设置为应用程序的主窗口.
MBoxes Header
1 /* mboxes.h */
2 #ifndef MBOXES_H
3 #define MBOXES_H
4
5 #include
6 #include
7
8 class Mboxes: public QWidget
9 {
10 Q_OBJECT
11 public:
12 Mboxes(QWidget *parent=0,const char *name=0);
13 private:
14 QLabel *label;
15 private slots:
16 void button1();
17 void button2();
18 void button3();
19 void button4();
20 void button5();
21 void button6();
22 void button7();
23 void button8();
24 void button9();
25 };
26
27 #endif
类的定义中针对9个按钮中的每一个都安排了一个slot,并且包含了将显示在窗口下部的标签.
MBoxes
1 /* mboxes.cpp */
2 #include “mboxes.h”
3 #include
4 #include
5 #include
6
7 Mboxes::Mboxes(QWidget *parent,const char *name)
8 : QWidget(parent,name)
9 {
10 QPushButton *button;
11 QVBoxLayout *layout = new QVBoxLayout(this,3);
12
13 button = new ..

回复 发表
主题 版块