qt for symbian GUI 小积累1

1.QWizard 的使用

首先QWizard 是一个类似容器一样的东西,它需要一些小page作为它的item,想想list就会明白。这些小page就是QWizardPage ,你可以直接使用这个wizard容器和wizard page,只需使用QWizard的 addPage函数即可。你把这些page添加进去,它们就有了自己的id了,显示顺序也确定了。当然这些page也可以setTitle,setLayout因为他们继承于QWidget ,还可以setSubTitle等等。

如果你想要这些page按你安排的顺序显示,那么就可以使用如:setPage( Page_Intro, new IntroPage);前面个参数是id号,后面个则是page的指针。当然为了更加好的使用 QWizard ,你可以自定义类来继承于 QWizard QWizardPage ,在你添加了page后,你可以使用 setStartId来设置起始page。

现在自定义你自己的QWizardPage 吧。比如:
EvaluatePage:: EvaluatePage( QWidget * parent)

    
:
 
QWizardPage
(
parent)
{
    
setTitle(
tr(
"Evaluate
 
<i>Super
 
Product
 
One</i>&trade;"
));
    
setSubTitle(
tr(
"Please
 
fill
 
both
 
fields.
 
Make
 
sure
 
to
 
provide
 
a
 
valid
 
"
                   
"email
 
address
 
(e.g.,
 
[email protected])."
));
    
nameLabel 
=
 
new
 
QLabel
(
tr(
"N&ame:"
));
    
nameLineEdit 
=
 
new
 
QLineEdit
;

    
nameLabel->
setBuddy(
nameLineEdit);
    
emailLabel 
=
 
new
 
QLabel
(
tr(
"&Email
 
address:"
));
    
emailLineEdit 
=
 
new
 
QLineEdit
;
    
emailLineEdit->
setValidator(
new
 
QRegExpValidator
(
QRegExp
(
".*@.*"
),
 
this
));
    
emailLabel->
setBuddy(
emailLineEdit);

    
registerField(
"evaluate.name*"
,
 
nameLineEdit);
    
registerField(
"evaluate.email*"
,
 
emailLineEdit);

    
QGridLayout
 
*
layout 
=
 
new
 
QGridLayout
;
    
layout->
addWidget(
nameLabel,
 
0
,
 
0
);
    
layout->
addWidget(
nameLineEdit,
 
0
,
 
1
);
    
layout->
addWidget(
emailLabel,
 
1
,
 
0
);
    
layout->
addWidget(
emailLineEdit,
 
1
,
 
1
);
    
setLayout(
layout);
}
代码应该不需要再解释了吧。
这个时候重写一个虚函数
int EvaluatePage:: nextId() const
{
return LicenseWizard:: Page_Conclusion;
}
QWizard 也有,在它里面可以使用switch来判断 currentId,也可以直接在page里面定义nextId,如上代码中。
重写了这个函数后,它就能自动在你按下next按钮后跳转到指定页面。
重写page的函数void initializePage();可以在该page启动的时候进行自定义操作。
特别介绍一下registerField函数的使用。
registerField("register.name*", nameLineEdit);
注册了一块field来供wizard里面的所有page都可以访问,而如果在名字里面加了*号的话,则指定该区域是强制区域,也就是说在该page中
必须所有的强制区域都有了合适的数据,next按钮和finish按钮才能发挥功效。
在强制区域中可以使用setValidator来进行条件的设置,从代码
emailLineEdit-> setValidator( new QRegExpValidator ( QRegExp ( ".*@.*" ), this ));中可以看到。

2. QLabel
一些比较有意思的功能,比如setBuddy,官方说:
When the user presses the shortcut key indicated by this label, the keyboard focus is transferred to the label's buddy widget.

3. setWordWrap
自动换行操作。比如QLabel的文字,但是前提是要有空格之类才能换行。

你可能感兴趣的:(qt for symbian GUI 小积累1)