详解QT Widget应用学习教程

移动开发
Qt Widget中QWidget不是一个抽象类;它可用作其他widget的容器,并很容易作为子类使用来创建定制widget,它经常用来创建放置其他 widget 的窗口。

QT Widget学习笔记是本文要介绍的内容,Widget 是使用 Qt 编写的图形用户界面 (GUI) 应用程序的基本生成块。每个 GUI 组件,如按钮、标签或文本编辑器,都是一个 widget ,并可以放置在现有的用户界面中或作为单独的窗口显示。每种类型的组件都是由 QWidget 的特殊子类提供的,而 QWidget 自身又是 QObject 的子类。

QWidget 不是一个抽象类;它可用作其他 widget 的容器,并很容易作为子类使用来创建定制 widget。它经常用来创建放置其他 widget 的窗口。

至于 QObject,可使用父对象创建 widget 以表明其所属关系,这可确保删除不再使用的对象。使用 widget,这些父子关系就有了更多的意义:每个子类都显示在其父级所拥有的屏幕区域内。也就是说,当删除窗口时,其包含的所有 widget 也都自动删除。
创建窗口

如果 widget 未使用父级进行创建,则在显示时视为窗口或顶层 widget。由于顶层 widget 没有父级对象类来确保在其不再使用时就删除,因此需要开发人员在应用程序中对其进行跟踪。

在下例中,我们使用 QWidget 创建和显示具有默认大小的窗口:

  1. QWidget *window = new QWidget();  
  2. window->resize(320, 240);  
  3. window->show(); 

我们可以通过将 window 作为父级传递给其构造器来向窗口添加子 widget。在这种情况下,我们向窗口添加按钮并将其放置在特定位置:

  1. QPushButton *button = new QPushButton(tr("Press me"), window);  
  2. button->move(100, 100);  
  3. button->show(); 

该按钮现在为窗口的子项,并在删除窗口时一同删除。请注意,隐藏或关闭窗口不会自动删除该按钮。

使用布局

通常,子 widget 是通过使用布局对象在窗口中进行排列,而不是通过指定位置和大小进行排列。在此处,我们构造要并排排列的标签和行编辑框 widget。

  1. QLabel *label = new QLabel(tr("Name:"));  
  2. QLineEdit *lineEdit = new QLineEdit();  
  3.  
  4. QHBoxLayout *layout = new QHBoxLayout();  
  5. layout->addWidget(label);  
  6. layout->addWidget(lineEdit);  
  7. window->setLayout(layout); 

我们构造的布局对象管理通过 addWidget() 函数提供的 widget 的位置和大小。布局本身是通过调用 setLayout() 提供给窗口的。布局仅可通过其对所管理的 widget(和其他布局)的效果才可显示。

在上文示例中,每个 widget 的所属关系并不明显。由于我们未使用父级对象构造 widget 和布局,我们会看到一个空窗口和两个包含了标签与行编辑框的窗口。不过,如果我们告知布局来管理标签和行编辑框,并在窗口中设置布局,两个 widget 与布局本身就都会成为窗口的子项。

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

  1. QLabel *queryLabel = new QLabel(tr("Query:"));  
  2. QLineEdit *queryEdit = new QLineEdit();  
  3. QTableView *resultView = new QTableView();  
  4.  
  5. QHBoxLayout *queryLayout = new QHBoxLayout();  
  6. queryLayout->addWidget(queryLabel);  
  7. queryLayout->addWidget(queryEdit);  
  8.  
  9. QVBoxLayout *mainLayout = new QVBoxLayout();  
  10. mainLayout->addLayout(queryLayout);  
  11. mainLayout->addWidget(resultView);  
  12. window->setLayout(mainLayout); 

除了 QHBoxLayout 和 QVBoxLayout,Qt 还提供了 QGridLayout 和 QFormLayout 类来协助实现更复杂的用户界面。 

小结:详解QT Widget应用学习教程的内容介绍完了,希望通过QT Widget应用内容的学习能对你有所帮助。

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-09-07 16:36:00

Qt Widget

2011-09-07 10:34:48

Android Wid

2011-09-09 17:59:26

QT Widget

2011-09-07 16:43:38

Qt Widget

2011-09-09 11:05:56

Widget

2011-09-01 16:01:25

Qt插件

2011-09-09 17:24:39

Qt Webkit模块

2011-09-08 13:11:07

Android Wid实例

2011-09-07 13:42:36

Android Wid实例

2011-09-07 13:00:36

2011-09-08 15:40:45

Android Wid组件

2011-06-24 10:54:34

Qt Mysql

2011-07-04 11:21:59

QT Designer

2011-09-07 16:24:10

Qt Widget

2011-09-09 16:38:51

Android Wid源码

2011-09-06 11:08:21

QT播放器Mplayer

2011-06-24 09:13:30

QT SDL

2011-06-17 09:58:26

Qt Chapter QObject

2011-06-17 10:19:11

Qt QWidge QSetting

2011-08-30 15:32:08

QtQuickQML
点赞
收藏

51CTO技术栈公众号