StackDlg(QWidget *parent= 0);
~StackDlg();
private:
} ;
QListWidget *list;
QStackedWidget *stack;
Qlabel *labell;
QLabel *label2;
Qlabel *label3;
在文件开始部分添加以下头文件:
#include <QListWidget>
#include <QStackedWidget>
#include <QLabel>
(3) 打开
"stackdlg.cpp" 文件,在停靠窗体StackDlg 类的构造函数中添加如下代码:
StackDlg::StackDlg(QWidget *parent) : QDialog(parent)
setWindowTitle(tr("StackedWidget"));
list =new QListWidget(this);
list一>insertitem(O,tr("Windowl"));
list->insertitem(l,tr("Window2"));
list->insertitem(2,tr("Window3"));
labell =new QLabel (tr ("WindowTestl"));
label2 =new QLabel(tr("WindowTest2"));
label3 =new QLabel(tr("WindowTest3"_));
stack =new QStackedWidget (this);
stack->addWidget (labell) ;
stack->addWidget(label2);
stack->addWidget(label3);
QHBoxLayout *mainLayout ==new QHBoxLayout(this);
mainLayout->setMargin (5);
mainLayout->setSpacing(S);
mainLayout->addWidge 七(list);
mainLayout->addWidget(stack,0,Qt::AlignHCenter);
mainLayout->setStretchFactor(list,1);
mainLayout->setStretchFactor(stack,3);
connect(list,SIGNAL(currentRowChanged(int)),stack,SLOT(setCurrentindex(int)));
(4) 在stackdlg.cpp 文件的开始部分加入以下头文件:
#include <QHBoxLayout>
(5) 运行程序,显示效果如图3.4 所示。
基本布局(QLayout)
Qt 提供了QHBoxLayout 类、
QVBoxLayout 类及QGridLayout 类等的基本布局管理,分
别是水平排列布局、垂直排列布局和网格排列布局。各种布局类及继承关系如图3.6 所示。
QLayout
QBoxLayout
QGridLayout
QH即xLayout
QVBoxLayout
各种布局类及继承关系
布局中常用的方法有addWidget()和add.Layout() 。
add Widget()方法用千加入需要布局的控件,方法原型如下:
void addWidget
)
QWidget *widget,
int fromRow,
int fromColumn,
int rowSpan,
int columnSpan,
Qt: :Alignment alignment=O
addLayout()方法用于加入子布局,方法原型如下:
void addLayout
QLayout *layout,
int row,
int column,
int rowSpan,
int columnSpan,
Qt::Alignment alignment=O