QMainWindow :根据屏幕尺寸设置小部件尺寸

QMainWindow : Set widgets size with respect to screen size

我有一个继承自 QMainWindow 的 Qt class。 class 的构造函数创建了两个添加到水平布局对象的小部件,如下所示:

MyWindow::MyWindow()
{
    resize(QDesktopWidget().availableGeometry(this).size());
    display = new MyWidget(this);
    display->setSizePolicy(QSizePolicy::Expanding, 
                           QSizePolicy::Expanding);

    current = new MyWidget(this);
    current->setSizePolicy(QSizePolicy::Expanding, 
                           QSizePolicy::Expanding);

    QHBoxLayout *layout = new QHBoxLayout();
    layout->addWidget(display);
    layout->addWidget(current);

    QFrame* frame = new QFrame();
    frame->setFrameShape(QFrame::StyledPanel);
    frame->setLayout(layout);
    setCentralWidget(frame);

    show();
}

这当前显示了小部件的一面。但是,我想做的是让其中一个小部件占据水平 space 的 30%,而另一个占据另外 70%。如果调整主 window 的大小但保持这些比率,我还希望小部件扩展或收缩。

将小部件放入布局时,您可以指定其拉伸因子:

QHBoxLayout *layout = new QHBoxLayout();
layout->addWidget(display, 3);
layout->addWidget(current, 7);

http://doc.qt.io/qt-5/qboxlayout.html#addWidget