QMainWindow :根据屏幕大小设置小部件大小

Posted

技术标签:

【中文标题】QMainWindow :根据屏幕大小设置小部件大小【英文标题】:QMainWindow : Set widgets size with respect to screen size 【发布时间】:2015-04-14 14:30:11 【问题描述】:

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

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();

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

太棒了。谢谢你。不敢相信我忽略了这一点。

以上是关于QMainWindow :根据屏幕大小设置小部件大小的主要内容,如果未能解决你的问题,请参考以下文章

最大化的 qmainwindow 变得比屏幕大

如何根据屏幕尺寸调整颤振小部件的大小?

对 QMainWindow 的大小调整做出反应以调整小部件的大小

使用 Qt,如何使用向上或向左的鼠标移动事件调整小部件的大小

根据父级大小按比例缩小小部件中的所有子级

QSplitter 未正确设置大小