【问题标题】:Qt Gridlayout doesn't realign GUI elementsQt Gridlayout 不会重新对齐 GUI 元素
【发布时间】:2011-12-05 12:26:58
【问题描述】:

在我的 Qt 应用程序中,我的主窗口小部件的 ctor 中有以下代码。无论我如何对齐添加到 QGridLayout 的按钮,它们始终位于左上角,彼此重叠。

谁能告诉我我做错了什么,我找不到。

btn_File= new QPushButton("&File", this);
btn_Close = new QPushButton("&Close", this);
btn_File->setAutoFillBackground(true);
btn_Close->setAutoFillBackground(true);

QGridLayout * layout = new QGridLayout(this);
layout->setContentsMargins(20,20,10,10);
layout->setSpacing(5);
layout->addWidget(btn_File,2,2, Qt::AlignRight);
layout->addWidget(btn_Close,1,1);
this->setLayout(layout);

编辑:似乎只绘制了btn_Close。我只是尝试在网格中添加一个 QComboBox,但它没有显示出来。

【问题讨论】:

  • 这应该可以正常工作。你确定你没有在设计器中使用不同的布局吗?
  • @webclectic 我没有使用设计师。我使用 VS2008 从代码中完成这一切。

标签: c++ qt qgridlayout


【解决方案1】:

问题是我的主窗口是从QMainWindow 派生的,您需要在其中添加一个 CentralWidget,然后再添加 GUI 元素。我将主窗口改为从QWidget 派生,现在它可以工作了。

【讨论】:

  • 您可以将此作为评论添加到您的原始帖子中。
【解决方案2】:

最后尝试调用this->adjustSize()

【讨论】:

    【解决方案3】:

    qt 布局真的很烂! qgridlayout 上的对齐方式取决于对象的大小、对象需要多少列以及插入的最大对象的大小。所以很难按需要放置对象... 我建议使用 setGeometry 或 move 代替!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-20
      • 1970-01-01
      • 1970-01-01
      • 2018-02-05
      • 2012-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多