【问题标题】:QT gui items won't shrink to ft to their parent widgetQT gui 项目不会缩小到其父小部件的 ft
【发布时间】:2014-01-04 23:08:49
【问题描述】:

我的主窗口下有三个小部件。我设计我的程序,每个小部件将由一个类控制。

过去 2 小时,我浪费时间将 3 个 GUI 元素安装到其中一个小部件中。 我想要一个标签、一个订单项和一个按钮。我将它们放入网格布局中(在实际情况下,为了简单起见,我有 3 行,我在下面的示例中放置了 1 行)。并将网格布局的父级设置为我的班级。 我期望的是这个 GUI 项目可以自行调整大小并适合此小部件中的一行,无论我尝试了什么,我都无法成功。

简而言之,我希望这些项目能够自行缩小以适应小部件。但无法弄清楚如何做到这一点。有什么建议吗?

void
enviromentSetup::createDialogs()
{
    numberOfPoints  = new QLabel (QApplication::translate("leftPanel","numberOfPoints"));

    inputNumberOfPoints = new       
    QLineEdit(QString::number(st_environmentParamaters.number_of_points_in_line));

    maxElementsButton = new QPushButton("Max Elems");

    gridLayout = new QGridLayout(this);
    gridLayout->addWidget(numberOfPoints, 0, 0);
    gridLayout->addWidget(inputNumberOfPoints, 0, 1);
    gridLayout->addWidget(maxElementsButton, 0, 2);


    this->show();
}

【问题讨论】:

  • 对不起,我删除了我的答案,因为我没有看到你正在使用 QGridLayout 的另一个构造函数,它接收父小部件。但这提出了另一个您的代码没有显示的问题: environmentSetup 是一个什么样的类?是继承自QWidget、QDialog吗?
  • 不用担心,谢谢您的回复。 EnvironmentSetup 固有的 QWidget。
  • 您不应该在布局本身上设置父级!另外,我在这个 sn-p 中没有看到布局设置代码。请粘贴更多代码。
  • 对您的三个小部件中的每一个调用 setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored) 是否都能获得您想要的行为?

标签: c++ qt user-interface


【解决方案1】:

仅将布局的父级设为主要小部件是不够的。您还必须明确设置小部件的布局。

在显示小部件之前添加以下行:

this->setLayout(gridLayout);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 2011-06-07
    • 2017-10-08
    • 2010-12-30
    • 2016-05-13
    相关资源
    最近更新 更多