如何放大和缩小QWidget中的控件?

hhmouse111 2009-11-17 02:09:33
小弟刚刚开始接触qt
目前正在做一个基于QWidget的GUI application,遇到个问题:
application 中有一个button,其功能是,点击后,放大Qwidget中所有的pushButton, lineEdit, checkBox的size至原来的1.5倍
尝试放在layout里,控制layout的size来实现但是失败了..放大layout的size后,button, lineEdit的size没变,它们只是间距变大了..

大家有什么好的方法么?
...全文
716 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhmouse111 2009-11-18
  • 打赏
  • 举报
回复
johnnyzhou兄说的方法一是指重写sizeHint() 方法么?
方法二尝试了,比较麻烦,以后再研究下,不管怎样还是先谢谢你。

目前用的是dext兄台的方法,比较简单,谢谢。
dext 2009-11-18
  • 打赏
  • 举报
回复
设置你的所有的 Widget 的 sizePolicy 为 Expanding

然后只要改变窗口 大小,所有Widget的大小就会变了。

QWidget::setSizePolicy ( QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical )

lineEdit->setSizePolicy(Expanding, Expanding);
johnnyzhou 2009-11-17
  • 打赏
  • 举报
回复
方法一:
class YourWidget : public Widget(QPushButton or QCheckbox ...)
{
public :
....

void doubleSize() {
mWidth *= 2;
mHeight *= 2;
}

protected:
QSize sizeHint() const;

private :
int mWidth;
int mHeight;
};


QSize sizeHint() const {
return QSize( mWidth, mHeight );
}

layout 布局会根据其中各器件的 sizeHint() 函数返回的大小来计算其大小

方法二:
使用GraphicsView , 然后继承GraphicsItem来写你的器件, 这个好像比较麻烦~~~ ^__^
zhu_xz 2009-11-17
  • 打赏
  • 举报
回复
覆盖resizeEvent方法,然后对所有children widget调用resize?
skyjsq 2009-11-17
  • 打赏
  • 举报
回复
我也想知道~~帮顶

16,216

社区成员

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

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