精通Qt4编程
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 使用Qt布局管理器

在第一个Qt程序中,程序在窗口上直接加载了一个QLabel窗口部件,以显示一些文本信息。然而,在较复杂的GUI用户界面上,仅仅通过指定窗口部件的父子关系以期达到加载和排列窗口部件的方法是行不通的,最好的办法是使用Qt提供的布局管理器。

在第一个Qt GUI应用程序的基础上,现在加入一个“关闭”按钮,并学习如何使用Qt的布局管理器对界面进行排布和外观控制。

首先,看一下新的应用程序的实现代码。

        #include <QtGui/QApplication>
        #include <QtGui/QWidget>
        #include <QtGui/QLabel>
        #include <QtCore/QTextCodec>
        #include <QtGui/QPushButton>
        #include <QtGui/QVBoxLayout>

将用到的按钮类QPushButton和布局管理器类QVBoxLayout的头文件包含进来。

        int main(int argc, char* argv[])
        {
            QApplication app(argc, argv);
            QTextCodec::setCodecForTr(QTextCodec::codecForName("gb2312"));
            QWidget* pWidget = new QWidget;
            QLabel label(pWidget);
            label.setText(QObject::tr("同一个世界,同一个梦想!"));
            QPushButton* btn = new QPushButton(QObject::tr("关闭"), pWidget);

创建一个名为“关闭”的QPushButtton按钮对象,父窗口部件设置为pWidget。

            QVBoxLayout* layout = new QVBoxLayout;
            layout->addWidget(&label);
            layout->addWidget(btn);
            pWidget->setLayout(layout);

创建一个垂直布局管理器QVBoxLayout对象layout;函数QVBoxLayout::addWidget() 将标签对象label和按钮对象btn放置在该管理器中;最后函数QWidget::setLayout() 将把垂直布局管理器layout添加到窗口部件对象pWidget中。垂直布局管理器QVBoxLayout将上述添加的标签label和按钮btn由上到下依次放置在pWidget用户界面中。

            pWidget->show();
            return app.exec();
        }

最后显示窗口,并进入Qt应用程序事件循环。编译、运行应用程序,运行界面如图1-13所示。

图1-13 hello程序的新面孔