先看效果图:
主界面
主界面我们这里不是采用子类化QMainWindow的方法,而是子类化QWidget来作为主窗口。因为我们仅仅是关注在布局这一块,所以QMainWindow中那些很方便的添加菜单栏之类的功能我们不用,所以就简单点,直接用子类化的QWidget就可以了。Window.h
头文件很简单,createLabel()函数的目的是创建QLabel,为啥要这样做呢?想象一下,如果你要创建10个QLabel,难道你要写十遍 QLabel *label = new QLabel(this);吗?显然写个私有函数是比较方便简洁的。
class Window : public QWidget
{
Q_OBJECT
public:
Window(); //一个构造函数private:
QLabel *createLabel(const QString &text); //一个私有函数,为创建QLabel而设置的};Window.cpp
cpp文件也很简单,基本就是把所有的widget加入到layout中即可。
看看createLabel()函数,传入一个text名称,在函数中创建QLabel - 设置下QLabel样式 - 返回指针,整个过程就完了。
Window::Window()
{
QTextBrowser *centralWidget = new QTextBrowser;
centralWidget->setPlainText(tr("Central widget"));
BorderLayout *layout = new BorderLayout;
layout->addWidget(centralWidget, BorderLayout::Center);
layout->addWidget(createLabel("North"), BorderLayout::North);
layout->addWidget(createLabel("West"), BorderLayout::West);
layout->addWidget(createLabel("East 1"), BorderLayout::East);
layout->addWidget(createLabel("East 2") , BorderLayout::East);
layout->addWidget(createLabel("South"), BorderLayout::South);
setLayout(layout);
}
QLabel *Window::createLabel(const QString &text)
{
QLabel *label = new