调整布局大小等于MainWindow

时间:2018-05-28 09:25:40

标签: qt layout

当我运行我的程序时,它将正确显示所有内容,当我调整主窗口大小时,布局以及所有相关的小部件保持固定,而不是使用主窗口调整大小。我曾经增加我的所有小部件和listWidget方面的窗口计算机分辨率大小,但仍然这不是一个正常工作。 我使用这一个代码查找系统的高度和宽度。

    QWidget widget;
    widget.resize(widget.width(), widget.minimumHeight());
    QRect rec = QApplication::desktop()->screenGeometry();
    int h = rec.height();
    int w = rec.width();
    // Increasing the listwidget size
    ui->listWidget->setFixedHeight(h);
    ui->listWidget->setFixedWidth(w);
   //increasing the button size
    ui->pushButton->setFixedHeight(h0.2);
    ui->pushButton->setFixedWidth(w0.2);

在此link,您会找到两个说明我问题的屏幕截图。

请解决以解决我的问题。非常感谢提前。

2 个答案:

答案 0 :(得分:0)

使用QtCreator,您可以在设计器中右键单击父窗口小部件并添加网格布局。 这个尺寸调整了孩子们的尺寸。

答案 1 :(得分:0)

在Qt Designer中定义窗口和表单的布局时,必须事先定义表单的每个元素,以便具有工作布局。

此解决方案基于对问题的评论中提供的屏幕截图。请按照以下步骤操作:

  1. 如果没有任何内容,则将空小部件添加到表单的中心区域。它将用作稍后添加的控件的占位符,当然,您可以将其替换为您想要的任何窗口小部件。但是你需要在那里定义一个合适的布局。
  2. 在属性面板中,将此窗口小部件的水平QSizePolicy设置为MinimumExpanding。
  3. 在进度条的左侧添加horizontal spacer
  4. 在左侧定义白色小部件的最小/最大宽度(我猜它是一个文本区域)。例如,将最大宽度设置为200 像素。
  5. 为右侧的QTabWidget做同样的事情。
  6. 在顶部为Groupbox提供最小高度。
  7. 然后将网格布局提供给MainWindow。
  8. 你应该在设计师的视图中得到类似的东西(我使用黑色主题,当然你的颜色会有不同的颜色):

    Qt Designer screenshot

    如果你完成了所有步骤,你应该有一个很好的大小调整窗口。

    对于未来:记得整体定义你的布局,也需要在需要时使用占位符小部件,仔细阅读有关小部件大小策略的文档(有几个,你需要使用它们来完全理解每个策略)并保持请注意,Qt使用的是基于容器的方法,这种方法与.Net框架所使用的依赖于锚点概念的方法不同。

    编辑:回答评论中的问题

    您需要将布局添加到包含其他窗口小部件的任何窗口小部件,例如添加控件到您的组框将需要给它一个网格,水平或垂直布局,以便在调整大小时很好地扩展。再次使用间隔符和大小策略使其看起来像您想要的那样。如果您需要添加或删除控件或更改其位置,您可能需要制动布局,重新排列然后再次设置。

    您还可以选择小部件组并为其指定布局,例如垂直,比另一个组并将它们设置为水平等等......然后给容器小部件提供网格布局以构建复合布局。

    有无穷无尽的可能性,你只需要练习并经历反复试验......

    您也可以通过编程方式完成所有操作,请查看Qt小部件文档。但是对于复杂的布局我不会这样:它有很多代码......你必须编译并运行以测试每个修改。