在Qt中编写代码让控件位置大小随窗口大小改变而改变

第一步:首先建一个Qt Widgets Application工程(带ui文件)。头文件和源文件没有改名,为mainwindow.h和mainwindow.cpp
在Qt中编写代码让控件位置大小随窗口大小改变而改变_第1张图片
第二步:在ui文件中,拖上你的所需的控件。我这里拖了4个Label控件和一个Buttion。
在Qt中编写代码让控件位置大小随窗口大小改变而改变_第2张图片
第三步:在头文件中添加如下一行代码(即要重写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);

}

第四步:运行程序,即可发现,控件随窗口大小改变而改变。

你可能感兴趣的:(编程知识,qt)