容器组(Containers)

来源:互联网 发布:mac支持的大型网游 编辑:程序博客网 时间:2024/06/05 06:56

 Group Box:组框。
 Scroll Area:滚动区域。
 Tool Box:工具箱。
 Tab Widget:标签小部件。
 Stacked Widget:堆叠部件。
 Frame:帧。
 Widget:小部件。
 MdiArea:MDI区域。
 Dock Widget:停靠窗体部件。
 QAxWidget:封装Flash的ActiveX控件。
1.创建窗口
如果Widget未使用父级进行创建,则在显示时视为窗口或顶层Widget。由于顶层Widget没有父级对象类来确保在其不再使用时就删除,所以需要开发人员在应用程序中对其进行跟踪。
在本例中,使用QWidget创建和显示具有默认大小的窗口:
QWidget *window = new QWidget();
window->resize(320, 240);
window->show();
QPushButton *button = new QPushButton(tr("Press me"), window); //(a)
button->move(100, 100);
button->show();

2.使用布局
通常,子Widget是通过使用布局对象在窗口中进行排列的,而不是通过指定位置和大小进行排列的。在此,构造一个并排排列的标签和行编辑框Widget:

QLabel *label = new QLabel(tr("Name:"));QLineEdit *lineEdit = new QLineEdit();QHBoxLayout *layout = new QHBoxLayout();layout->addWidget(label);layout->addWidget(lineEdit);window->setLayout(layout);构造的布局对象管理通过addWidget()函数提供Widget的位置和大小。布局本身是通过调用setLayout()提供给窗口的。

由于Widget可包含其他Widget,所以布局可用来提供按不同层次分组的Widget。这里,要在显示查询结果的表视图上方、窗口顶部的行编辑框旁,显示一个标签:

QLabel *queryLabel = new QLabel(tr("Query:"));QLineEdit *queryEdit = new QLineEdit();QTableView *resultView = new QTableView();QHBoxLayout *queryLayout = new QHBoxLayout();queryLayout->addWidget(queryLabel);queryLayout->addWidget(queryEdit);QVBoxLayout *mainLayout = new QVBoxLayout();mainLayout->addLayout(queryLayout);mainLayout->addWidget(resultView);window->setLayout(mainLayout);
0 0
原创粉丝点击