gpt4 book ai didi

c++ - qt minimumSize() 返回 0 但在 qt designer 中它被设置为非零

转载 作者:行者123 更新时间:2023-11-30 05:07:49 25 4
gpt4 key购买 nike

有一个继承自 QLabel 的自定义小部件,它被提升为高级功能。它的 minimumSize(宽度和高度)在 qt 设计器中设置为 150。

但是在自定义小部件的构造函数中调用 minimumSize.width()minimumSize().height() 返回 0出于某种原因

InventoryItem::InventoryItem(QWidget* parent): QLabel(parent)
{
qDebug() << minimumSize().width(); // 0 ???
qDebug() << minimumSize().height(); // 0 ???
}

但是,它从主窗口构造函数返回正确的值 (150, 150)通过调用 ui->thatWidget->minimumSize().width();//150, ... 高度相同

主窗口上的小部件也有垂直和水平布局。

我只是不太熟悉 QT 中的 GUI 编程。

那里发生了什么??

如何从自定义小部件中获取正确的值??

最佳答案

主窗口的构造函数从以下行开始:ui->setup(this); .这是对 setup() 的调用为主窗口自动生成的 moc 文件的功能。此函数构造 InventoryItem 并然后设置其最小大小。眼见为实,因此请查看构建项目的文件夹中的 moc 文件。所以通过调用 ui->thatWidget->minimumSize().width();稍后在主窗口的构造函数中报告了预期的最小宽度 150。然而,在构建 InventoryItem 时,尚未设置最小大小,因此调用 qDebug() << minimumSize().width();在其构造函数中报告最小宽度的默认值。 documentation对于最小尺寸的 QWidget 状态:

By default, this property contains a size with zero width and height.

简而言之,世界仍在运转,即您观察到的行为是预期的行为。

关于c++ - qt minimumSize() 返回 0 但在 qt designer 中它被设置为非零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47110216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com