qwidget 怎么实现高度根据宽度变化

lin52na 2014-03-27 05:21:21
怎么让高度随着宽度变化? 比如我拖动窗口右边框时,高度自动保持和宽度一样 ?

我看文档是有QSizePolicy::setHeightForWidth 这个,我代码里使用方法如下

QSizePolicy sizePolicy;
sizePolicy.setHeightForWidth(true);
this->setSizePolicy(sizePolicy);
...全文
686 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lin52na 2014-03-28
  • 打赏
  • 举报
回复
http://stackoverflow.com/questions/17708449/qwidgetheightforwidth-is-not-called http://stackoverflow.com/questions/19076544/qwidgetheightforwidth-and-qmainwindow http://stackoverflow.com/questions/452333/how-to-maintain-widgets-aspect-ratio-in-qt/1160476#1160476 找到了几个,再研究下
lin52na 2014-03-28
  • 打赏
  • 举报
回复
引用 5 楼 u010603437 的回复:
[quote=引用 3 楼 lin52na 的回复:] [quote=引用 1 楼 u010603437 的回复:] 重载resizeEvent,在函数里面设置同步就是了
这个试过,会闪烁,当然这不是问题,可以再优化。 但是:重载这个函数不会引起嵌套循环吗 ?[/quote] 不会,你取当前的size,如果宽度不等于高度,就把高度和宽度改为一致就行了,这样会多触发一次事件,不会循环。[/quote] 恩,这样也是一个方法。 不过还是纠结setHeightForWidth这个东西,搞不明白不甘心啊,跟它卯上了
风叶落 2014-03-28
  • 打赏
  • 举报
回复
引用 3 楼 lin52na 的回复:
[quote=引用 1 楼 u010603437 的回复:] 重载resizeEvent,在函数里面设置同步就是了
这个试过,会闪烁,当然这不是问题,可以再优化。 但是:重载这个函数不会引起嵌套循环吗 ?[/quote] 不会,你取当前的size,如果宽度不等于高度,就把高度和宽度改为一致就行了,这样会多触发一次事件,不会循环。
lin52na 2014-03-28
  • 打赏
  • 举报
回复
引用 2 楼 heksn 的回复:
[quote=引用 楼主 lin52na 的回复:] 怎么让高度随着宽度变化? 比如我拖动窗口右边框时,高度自动保持和宽度一样 ? 我看文档是有QSizePolicy::setHeightForWidth 这个,我代码里使用方法如下

QSizePolicy sizePolicy;
sizePolicy.setHeightForWidth(true);
this->setSizePolicy(sizePolicy);
起作用吗?[/quote] 不起作用啊 我是自己继承了一个QWidget,上面有几个label和lineEdt,然后widget上设置了这些label和lineEdt的布局。现在想让这个widget窗口高度随着宽度变化。 文档所说setSizePolicy使用条件是布局存在,如下 This property holds the default layout behavior of the widget. If there is a QLayout that manages this widget's children, the size policy specified by that layout is used. If there is no such QLayout, the result of this function is used. 感觉我使用方法没有错,就是没作用。
lin52na 2014-03-28
  • 打赏
  • 举报
回复
引用 1 楼 u010603437 的回复:
重载resizeEvent,在函数里面设置同步就是了
这个试过,会闪烁,当然这不是问题,可以再优化。 但是:重载这个函数不会引起嵌套循环吗 ?
  • 打赏
  • 举报
回复
引用 楼主 lin52na 的回复:
怎么让高度随着宽度变化? 比如我拖动窗口右边框时,高度自动保持和宽度一样 ? 我看文档是有QSizePolicy::setHeightForWidth 这个,我代码里使用方法如下

QSizePolicy sizePolicy;
sizePolicy.setHeightForWidth(true);
this->setSizePolicy(sizePolicy);
起作用吗?
风叶落 2014-03-27
  • 打赏
  • 举报
回复
重载resizeEvent,在函数里面设置同步就是了

16,215

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧