欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-10 16:22:55
...

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