我正在创建一个新的小部件,通过子类化QWidget类。我想能够为这个小部件设置一个比例(高度和宽度),并始终保持该比例。
为此,我一直在使用Qt5文档、谷歌和Stackoverflow进行搜索。显然,我找到了答案:特别是this one。但是,不幸的是,没有一个完全有效。
为此,我一直在使用Qt5文档、谷歌和Stackoverflow进行搜索。显然,我找到了答案:特别是this one。但是,不幸的是,没有一个完全有效。
- 即使部件是窗口,设置
sizeIncrement
也完全没有作用。 - 我试图重载resizeEvent,但我真的不知道如何做到这一点...
如果我按照这个答案的方法:
- 如果部件是顶级窗口,比例根本没有得到保持,我可以随意调整它。
- 如果我将此部件放置在布局中,如果我只增加窗口的宽度和高度,比例是得以保持的。但是,一旦我将宽度或高度增加太多,部件就被压扁了。相反,我希望布局自动调整其大小以保持部件的比例。
那么,如何保持子类化QWidget的宽高比?
QLabel
中有效。https://dev59.com/dGsy5IYBdhLWcg3w8Slc - phyattQWidget::heightForWidth()
了吗?这允许您指定宽高比。如果这还不够,创建一个父级“虚拟”QWidget将您的widget置于3x3的QGridLayout中,将您的widget放在中间,并在边缘周围放置QSpacerItem(参见QGridLayout::addItem()
)。当调整大小时,QSpacerItem可以提供额外的间距(或缩小到0)。您可能需要使用QGridLayout::setColumnStretch()
和QGridLayout::setRowStretch()
。 - Anthony