标题:【摘录】《KDE2/Qt编程金典》第三章:在窗口中布置部件——3.8 框的对齐方式
作者:XChinux
日期:2005-09-04 10:42
内容:
如果插入到垂直框中的部件不能水平改变位置,并且如果部件和包含它的框不一样宽,那么将有三种选择。部件可以定位到左边、右边或者在中间。下面的例子将成在框的上部插入一个较宽的按钮,然后在下面插入四个大小固定的按钮。
Main
1 /* main.cpp */
2 #include
3 #include “vboxalign.h”
4
5 int main(int argc,char **argv)
6 {
7 KApplication app(argc,argv,”vboxalign”);
8 VBoxAlign *vboxalign = new VBoxAlign();
9 vboxalign->show();
10 app.setMainWidget(vboxalign);
11 return(app.exec());
12 }
VBoxAlign Header
1 /* vboxalign.h */
2 #ifndef VBOXALIGN_H
3 #define VBOXALIGN_H
4
5 #include
6 #include
7 #include
8
9 class VBoxAlign: public QWidget
10 {
11 public:
12 VBoxAlign(QWidget *parent=0,const char *name=0);
13 ~VBoxAlign();
14 private:
15 QPushButton *acrossButton;
16 QPushButton *leftButton;
17 QPushButton *centerButton;
18 QPushButton *rightButton;
19 QPushButton *defaultButton;
20 };
21
22 #endif
头文件声明了所包含的类,作为私有成员,可变大小的按钮贯穿整个框的宽度,而四个固定大小的按钮只占据框宽度方向的一部分。
VBoxAlign
1 /* vboxalign.cpp */
2 #include “vboxalign.h”
3
4 VBoxAlign::VBoxAlign(QWidget *parent,const char *name)
5 : QWidget(parent,name)
6 {
7 QVBoxLayout *layout = new QVBoxLayout(this);
8
9 acrossButton = new QPushButton(this);
10 acrossButton->setText(“All the way across”);
11 acrossButton->setMinimumSize(acrossButton->sizeHint());
12 layout->addWidget(acrossButton);
13
14 leftButton = new QPushButton(this);
15 leftButton->setText(“Left”);
16 leftButton->setFixedSize(leftButton->sizeHint());
17 layout->addWidget(leftButton,0,AlignLeft);
18
19 centerButton = new QPushButton(this);
20 centerButton->setText(“Center”);
21 centerButton->setFixedSize(centerButton->sizeHint());
22 layout->addWidget(centerButton,0,AlignCenter);
23
24 rightButton = new QPushButton(this);
25 rightButton->setText(“Right ..