如何放大和缩小QWidget中的控件?
小弟刚刚开始接触qt
目前正在做一个基于QWidget的GUI application,遇到个问题:
application 中有一个button,其功能是,点击后,放大Qwidget中所有的pushButton, lineEdit, checkBox的size至原来的1.5倍
尝试放在layout里,控制layout的size来实现但是失败了..放大layout的size后,button, lineEdit的size没变,它们只是间距变大了..
大家有什么好的方法么?
[解决办法]
覆盖resizeEvent方法,然后对所有children widget调用resize?
[解决办法]
方法一:
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来写你的器件, 这个好像比较麻烦~~~ ^__^
[解决办法]
设置你的所有的 Widget 的 sizePolicy 为 Expanding
然后只要改变窗口 大小,所有Widget的大小就会变了。
QWidget::setSizePolicy ( QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical )
lineEdit->setSizePolicy(Expanding, Expanding);