在我们的编程中,我们有时候会想让我们的程序窗体固定大小,而该大小是我们在编辑时的大小。
经过我的摸索,和查阅资料。找到了一个方法。其实也很简单。其实也就是先找到该窗体的物理大小。
然后设置固定窗体的大小即可,核心代码如下:
- loginDialog::loginDialog(QWidget *parent) :
- QDialog(parent),
- ui(new Ui::loginDialog)
- {
- ui->setupUi(this);
- int width = this->geometry().width();
- int height = this->geometry().height();
- this->setFixedSize(width,height); //设置窗体固定大小
- }
用Qt创建一个窗口,如何调整窗口的大小呢?
1.setBaseSize(),调用这个方法
1 |
setBaseSize( 800, 600 ); |
运行程序,发现一点效果都没有。
注意我这里并没有使用setFixedSize setMaximumSize,因为虽然这些方法能够设置初始大小,但是之后就不能用鼠标调整窗口大小了。
2.用重载QSize sizeHint() const
的方式来实现。这个函数是QWidget的一个虚函数。如下:
1 2 3 4 5 6 |
virtual QSize sizeHint () const
QSize Mywindow::sizeHint() const { return QSize( 800, 600 ); } |
这样就可以设置窗口的大小伪800x600了。
3.后来发现还有一个方法就是 resize。在构造函数中直接调用他设置大小就可以。如:
1 |
this->resize( QSize( 800, 600 )); |
在Qt中控制窗口大小控制窗口大小常用的函数:
1 2 3 4 5 6 7 8 |
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像素。
来源:oschina
链接:https://my.oschina.net/u/4311438/blog/4500957