|
@qq1043068972 请问下你有进行布局了吗?如果我没有布局,我当然可以获得geometry(),但是我进行布局后,布局里的子部件就无法获得结果- //当前屏幕大小
- int app_width = this->width();
- int app_height = this->height();
- int h_spacer_width = app_width*40/800;
- int v_spacer_height = app_height*5/600;
- qDebug()<<app_width<<",,"<<app_height<<",,"<<h_spacer_width
- <<",,"<<v_spacer_height;
- /*
- * 设置各部件自适应大小,默认屏幕大小800*600
- *
- */
- //系统时间大小
- int systemTime_height = app_height*20/600;
- ui->systemframe->setMaximumHeight(systemTime_height);
- //标题栏大小
- int title_height = app_height*40/600;
- ui->titleframe->setMaximumHeight(title_height);
- ui->titleLayout->setContentsMargins(h_spacer_width,v_spacer_height,h_spacer_width,v_spacer_height);
- //动画栏大小
- int animate_height = app_height*20/600;
- ui->animateframe->setMaximumHeight(animate_height);
- //公告栏大小
- int notice_height = app_height*180/600;
- ui->noticeframe->setMaximumHeight(notice_height);
- ui->noticeLayout->setContentsMargins(h_spacer_width,v_spacer_height,h_spacer_width,v_spacer_height);
- //主界面大小
- QRect camera_rect = ui->cameraframe->geometry();
- QRect mes_rect =ui->mesframe->geometry();
- qDebug()<<"before:"<<camera_rect<<","<<mes_rect;
- //为防止拉得过长导致比例失调,如果数学原理,长宽增长值的比例值应该等于
- //4:3,如果大于,就取小的
- if((app_width-800)*3>=4*(app_height-600)
- )
- {
- //设置实际长度
- int actual = app_height*300/600;
- qDebug()<<"actual:"<<actual;
- camera_rect.setWidth(actual*4/3);
- camera_rect.setHeight(actual);
- }else{
- int actual = app_width*400/800;
- qDebug()<<"actual:"<<actual;
- camera_rect.setWidth(actual);
- camera_rect.setHeight(actual*3/4);
- }
- //为防止拉得过长导致比例失调,如果数学原理,长宽增长值的比例值应该等于
- //45:56,如果大于,就取小的
- if((app_width-800)*56>=45*(app_height-600))
- {
- int actual = app_height*323/600;
- mes_rect.setWidth(actual*45/56);
- mes_rect.setHeight(actual);
- }else{
- int actual = app_width*260/800;
- mes_rect.setWidth(actual);
- mes_rect.setHeight(actual*56/45);
- }
- ui->cameraframe->setGeometry(camera_rect);
- ui->mesframe->setGeometry(mes_rect);
- qDebug()<<"after:"<<camera_rect<<","<<mes_rect;
- qDebug()<<ui->gridLayout_5->itemAt(3)->geometry();
- QMainWindow::resizeEvent(e);
复制代码 |
|