QT gui 项目不会缩小到其父小部件的 ft

Posted

技术标签:

【中文标题】QT gui 项目不会缩小到其父小部件的 ft【英文标题】:QT gui items won't shrink to ft to their parent widget 【发布时间】: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) 是否都能获得您想要的行为? 【参考方案1】:

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

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

this->setLayout(gridLayout);

【讨论】:

以上是关于QT gui 项目不会缩小到其父小部件的 ft的主要内容,如果未能解决你的问题,请参考以下文章

Qt 的鼠标事件

在QOpenGLWidget上使用Qt5小部件而不重写?

如何为 Qt GUI 小部件使用图像

在 Qt 小部件中的视频顶部绘画

使用 cmake 和提升的小部件编译 qt gui 时出错

如何在 Qt 表单类中调整 OpenGL 小部件的大小