在Qt中编写代码让控件位置大小随窗口大小改变而改变
程序员文章站
2022-03-10 16:22:55
...
第一步:首先建一个Qt Widgets Application工程(带ui文件)。头文件和源文件没有改名,为mainwindow.h和mainwindow.cpp
第二步:在ui文件中,拖上你的所需的控件。我这里拖了4个Label控件和一个Buttion。
第三步:在头文件中添加如下一行代码(即要重写resizeEvent函数)
protected:
virtual void resizeEvent(QResizeEvent *event) override;
在源文件的resizeEvent函数中,添加如下代码
int x = this->frameGeometry().width(); //获取ui形成窗口宽度
int y = this->frameGeometry().height();//获取窗口高度
//当窗口大小发生变化时,让控件的位置大小也发生变化
ui->LabelGrade->setGeometry(x*0.8,y*0.1,x/12,y/12);
ui->LabelGradeV->setGeometry(x*0.9,y*0.1,x/12,y/12);
ui->LabelName->setGeometry(x*0.8,y*0.2,x/12,y/12);
ui->LabelNameV->setGeometry(x*0.9,y*0.2,x/12,y/12);
ui->QPBChildMenu->setGeometry(x*0.42,y*0.8,x/8,y/15);
//当窗口过小时,让控件的相对大小变大,位置紧凑
if(x < 800 || y < 600)
{
ui->LabelGrade->setGeometry(x*0.6,y*0.3,x/10,y/10);
ui->LabelGradeV->setGeometry(x*0.75,y*0.3,x/10,y/10);
ui->LabelName->setGeometry(x*0.6,y*0.4,x/10,y/10);
ui->LabelNameV->setGeometry(x*0.75,y*0.4,x/10,y/10);
ui->QPBChildMenu->setGeometry(x*0.45,y*0.7,x/4,y/10);
}
第四步:运行程序,即可发现,控件随窗口大小改变而改变。