【发布时间】:2015-07-12 09:17:42
【问题描述】:
我正在通过继承 QWidget 类来创建一个新的小部件。我希望能够为这个小部件设置一个比率(对于它的高度和宽度),它将始终保持不变。
为此,我一直使用 Qt5 文档、Google 和 Stackoverflow 进行搜索。显然,我找到了答案:特别是this one。但是,不幸的是,没有一种是完全有效的:
- 设置
sizeIncrement完全没有任何作用,即使小部件是一个窗口 - 我试图重载resizeEvent,但我真的不知道该怎么做......
-
如果我关注this answer,有两件事:
- 如果小部件是顶级窗口,则根本不保持比例,我可以随意调整它的大小。
- 如果我把这个小部件放在一个布局中,如果我只是增加窗口的宽度和高度,比例就会保持不变。但是,一旦我将宽度或高度增加很多,小部件就会变平。相反,我希望布局自动调整其大小以保持小部件的比例。
那么,我怎样才能设法保持子类 QWidget 的纵横比?
【问题讨论】:
-
这是我处理的另一篇文章,效果很好,至少对于
QLabels 而言。 stackoverflow.com/questions/8211982/… -
您是否尝试过重新实现
QWidget::heightForWidth()?这允许您指定纵横比。如果这还不够,请创建一个父“虚拟”QWidget 以将您的小部件保存在 3x3 QGridLayout 中,您的小部件位于中间,QSpacerItem 在边缘(参见QGridLayout::addItem())。 QSpacerItem 可以在调整大小时根据需要提供额外的间距(或缩小到 0)。您可能需要使用QGridLayout::setColumnStretch()和QGridLayout::setRowStretch()。 -
谢谢你们,您的解决方案有效,但同样的问题仍然存在:如果我尝试仅增加小部件的宽度,则不再保持纵横比。