• 7471阅读
  • 0回复

【摘录】《KDE2/Qt编程金典》第四章:显示弹出式对话框——4.5 KDialogBase按钮 [复制链接]

上一主题 下一主题
离线XChinux
 

只看楼主 倒序阅读 楼主  发表于: 2005-09-18
  前面的例子显示了三个默认的按钮,分别是OK、Apply和Cancel。然而,KDialogBase还包含有其它的一些按钮,而且你也可以增加三个自己的按钮。下面的例子一共显示了八个按钮。
  这个例程的头文件和主程序与前面例子中的一样。两个程序唯一不同的地方是传输给KDialogBase构造函数的参数不一样。
MainWidget

1 /* mainwidget.cpp */
2 #include “mainwidget.h”
3 #include <qpushbutton.h>
4 #include <kdialogbase.h>
5
6 MainWidget::MainWidget(QWidget *parent,const char *name)
7 : QWidget(parent,name)
8 {
9 setMinimumSize(200,80);
10 setMaximumSize(200,80);
11
12 QPushButton *button =
13 new QPushButton(“Popup”,this);
14 button->setGeometry(50,20,100,40);
15 connect(button,SIGNAL(clicked()),
16 this,SLOT(popupKdb()));
17 }
18
19 void MainWidget::popupKdb()
20 {
21 QString caption(“All Buttons”);
22 QString button1(“User1”);
23 QString button2(“User2”);
24 QString button3(“User3”);
25
26 int buttons = KDialogBase::Ok
27 | KDialogBase::Apply
28 | KDialogBase::Cancel
29 | KDialogBase::Help
30 | KDialogBase::Default
31 | KDialogBase::User1
32 | KDialogBase::User2
33 | KDialogBase::User3;
34
35 KDialogBase *dialog = new KDialogBase(
36 this, // parent
37 “kdbwidget”, // name
38 TRUE, // modal
39 caption, // caption
40 buttons, // buttonmask
41 KDialogBase::Cancel, // default button
42 FALSE, // separator
43 button1, // button caption
44 button2, // button caption
45 button3); // button caption
46 dialog->exec();
47 delete dialog;
48 }


  这个部件被用做应用程序的主窗口。它包含了一个按钮,当点击这个按钮的时候,将显示KDialogBase窗口。
  无论何时点击主窗口的按钮,将会执行slot方法popupKdb()。KDialogBase部件是由第35行的构造函数创建的。在前面的例子中,所有的参数都使用了它们默认的参数,但在这个程序中,为每个参数都指定了值。
KDialogBase构造函数的输入参数

参数:parent
说明:父部件。通常是指使得KDialogBase弹出的widget。默认为 NULL
参数:name
说明:部件的内部名称。用于内部使用,以及产生出错信息。默认为NULL
参数:modal
说明:如果设置为TRUE,那么这个部件显示为模式,如果设置为FALSE,那么显示为非模式。默认为TRUE
参数:caption
说明:在窗口上部标题栏的文本。默认值是应用程序的名字
参数:button mask
说明:一组1位的标志,指定在这个对话框中哪个按钮被激活。默认的是三个按钮
参数:default button
说明:当对话框第一次显示出来时,将要被选择的按钮(这样也可以响应回车键)。默认的是OK按钮。
参数:separator
说明:如果为TRUE,那么在按钮的上面画一条分隔线。如果为FALSE,则没有分隔线。默认为FALSE
参数:button caption
说明:这个文本将显示在用户定义的按钮表面上,默认为NULL,使得用户按钮表面上是空的

  按钮的顺序,如前所三,是被KDialogBase内部决定的。用户可以决定包含哪些按钮,但这些按钮的显示顺序将保持不变。
  下表将列出所有可使用的按钮。接收来自这些按钮的消息只需要将slot方法连接到合适的KDialogBase信号上,实际上简单。为了返回结果代码,在前面程序中的第46行和第47行之间插入一行代码,如下所三:

dialog->exec();
int resultCode = dialog->result();
delete dialog;

KDialogBase的按钮和信号

按钮:Apply
信号:applyClicked()
注释:如果Apply按钮和Try按钮都被指定,那么Try按钮将不显三出来
按钮:Cancel
信号:closeClicked()
注释:这个按钮可以用来代替Close按钮
按钮:Close
信号:closeClicked()
注释:如果Close和Cancel按钮都被指定,那么只有Close按钮将会显示。结果代码设置为FALSE,并且对话框被关闭
按钮:Default
信号:defaultClicked()
按钮:Help
信号:helpClicked()
注释:这个按钮也调用invokedHTMLHelp()方法来显示使用setHelp()调用定义的帮助文本
按钮:No
信号:noClicked()
注释:当对话框为消息框方式的时候,这个按钮显示替换User1按钮,结果代码设置为FALSE,并且关闭对话框
按钮:OK
信号:okClicked()
注释:结果代码设置为TRUE,并且关掉对话框
按钮:Try
信号:tryClicked()
注释:这个按钮可以用来替换Apply按钮
按钮:User1
信号:user1Clicked()
注释:在构造函数中的一个参数指定这个标签。这个按钮在消息棵方式时被No按钮所替换
按钮:User2
信号:user2Clicked()
注释:在构造函数中的一个参数指定这个标签。这个按钮在消息棵方式时被No按钮所替换
按钮:User3
信号:user3Clicked()
按钮:Yes
信号:None
注释:当对话框是在消息方式的情况下,这个按钮可以显示替换User2按钮。结果代码设置为TRUE,并且关闭对话框
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个