如何在Qt中维护小部件的长宽比?

如何在Qt中保持小部件的长宽比以及如何将小部件居中?



一只斗牛犬
浏览 1474回答 3
3回答

德玛西亚99

正确的答案是创建您的自定义布局管理器。通过子类化QLayout可以实现。子类化QLayout时要实现的方法void addItem(QLayoutItem * item);将项目添加到布局。int count()const;返回项目数。QLayoutItem * itemAt(int index)const;返回索引处的项目引用;如果没有索引,则返回0。QLayoutItem * takeAt(int index);从索引的布局中获取并返回项目;如果没有,则返回0。Qt :: Orientation ExpandingDirections()const;返回布局扩展方向。bool hasHeightForWidth()const;告诉布局是否处理高度以进行宽度计算。QSize minimumSize()const;返回布局的最小尺寸。void setGeometry(const QRect&rect);设置布局的几何形状以及其中的项目。在这里,您必须保持纵横比并进行居中。QSize sizeHint()const;返回布局的首选大小。

一只名叫tom的猫

resize()从内部resizeEvent()进行调用对我而言从来没有奏效-充其量会导致闪烁,因为窗口两次调整大小(如您所愿),最糟糕的是无限循环。我认为保持固定长宽比的“正确”方法是创建自定义布局。您将只需要覆盖两个方法QLayoutItem::hasHeightForWidth()和QLayoutItem::heightForWidth()。
打开App,查看更多内容
随时随地看视频慕课网APP