我们用qt创建一个窗口,先后显示它,代码如下:
class Mywindow : public QMainWindow
{
.....
}
int main( int argc, char** argv )
{
QApplication app( argc, argv );
Mywindow wind;
wind.show();
return app.exec();
}
发现窗口很小,查看它的方法,以及他的父类widget的方法,发现有个方法像是设置其初始大小的,setBaseSize,调用这个方法
setBaseSize( 800, 600 );
运行程序,发现一点效果都没有。
注意我这里并没有使用setFixedSize setMaximumSize,因为虽然这些方法能够设置初始大小,但是之后就不能用鼠标调整窗口大小了。
后来baidu发现有人用重载
QSize sizeHint() const
的方式来实现。这个函数是QWidget的一个虚函数。
This property holds the recommended size for the widget.
If the value of this property is an invalid size, no size is recommended.
The default implementation of sizeHint() returns an invalid size if there is no layout for this widget, and returns the layout's preferred size otherwise.
virtual QSize sizeHint () const
QSize Mywindow::sizeHint() const
{
return QSize( 800, 600 );
}
这样就可以设置窗口的大小伪800x600了。
后来发现还有一个方法就是 resize。在构造函数中直接调用他设置大小就可以。如:
this->resize( QSize( 800, 600 ));
在Qt中控制窗口大小 控制窗口大小常用的函数:
void setMinimumSize ( const QSize & )
virtual void setMinimumSize ( int minw, int minh )
void setMaximumSize ( const QSize & )
virtual void setMaximumSize ( int maxw, int maxh )
void setMinimumWidth ( int minw )
void setMinimumHeight ( int minh )
void setMaximumWidth ( int maxw )
void setMaximumHeight ( int maxh )
注意:在控制主窗体部件的大小时,有时候达不到效果,可以试试先设置好子窗体
部件的大小,然后再设置主窗体部件大小。
例如:
用QMainWindow创建了一个窗体,然后设置其最小显示大小为setMinimumSize (
450, 600 );但是该主窗体中还包含其它子窗体部件,例如包含一个QTextEdit,那
么要先设置其最小大小为setMinimumSize ( 450, 600 );那么就达到了,整个窗体
最小只能是宽450像素,高600像素。