今天再看《C++ GUI Qt4编程》,看到第一章,介绍了布局,于是照着上面的查找对话框敲了一遍,当作练习布局的使用。

代码如下:

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    label = new QLabel("find what");
    lineEdit = new QLineEdit;

    QHBoxLayout *topleftLayout = new QHBoxLayout;
    topleftLayout->addWidget(label);
    topleftLayout->addWidget(lineEdit);

    caseCheckBox = new QCheckBox("Match case");
    backwardCheckBox = new QCheckBox("Search backward");

    QVBoxLayout *leftLayout = new QVBoxLayout;
    leftLayout->addLayout((topleftLayout));
    leftLayout->addWidget(caseCheckBox);
    leftLayout->addWidget(backwardCheckBox);

    findButton = new QPushButton("Find");
    closeButton = new QPushButton("close");


    QVBoxLayout *rightLayout = new QVBoxLayout;
    rightLayout->addWidget(findButton);
    rightLayout->addStretch();
    rightLayout->addWidget(closeButton);

    QHBoxLayout *mainLayout = new QHBoxLayout;
    mainLayout->addLayout(leftLayout);
    mainLayout->addLayout(rightLayout);

    this->setLayout(mainLayout);
}

运行图:
layout-parctice.png

分了三部分:左上,左下,右。

左上:一个label和一个lineEdit将它们水平布局.
左下:两个checkBox,将它们垂直布局.

在用一个垂直布局将左上左下布局为左.

右边为一个垂直布局,有两个按钮.

再将左右通过一个水平布局,布局成mainLayout.

最后设置widget的布局为mainLayout即可。

最后修改:2019 年 06 月 27 日
如果觉得我的文章对你有用,请随意赞赏