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的主要内容,如果未能解决你的问题,请参考以下文章