作者:手机用户2402852387 | 来源:互联网 | 2023-10-10 13:38
一.描述
我的程序布局是这样的,主窗口继承自QMainWindows,主窗口中包含一个Widget,Widget下面包含其它界面元素,这个Widget作为继承自QMainWindows的CentralWidget,QMainWindows类型的窗口中还包含默认标题栏和状态栏。我是在主窗口之中添加了一个QScrollArea,然后将Widget放入滚动条区域中,然后在主窗口的resizeEvent事件响应中检测主窗口的变化,实时修改滚动条区域的大小和放置在滚动条区域中Widget的大小,达到了需要的效果。
二.实现步骤
1.在主界面初始化时创建滚动条(QScrollArea类)
//以主界面为父窗口创建滚动条
QScrollArea *pScroll=new QScrollArea(this);//将包含所有UI信息的Widget放进滚动条区域
pScroll->setWidget(ui.centralWidget);
2.在主窗口的resizeEvent事件响应中实时改变窗口大小
Void MainFram::resizeEvent(QResizeEvent *event)
{if(pScroll){/*设置滚动条区域大小时,需要减去状态栏那部分的高度(实际高度并非是状态栏的高度,本处使用4倍的状态栏高度,可根据实际显示效果调整)否则会覆盖状态栏的显示。此处53就是标题栏与任务栏的高度,是centralWidget在整个界面中相对于主界面左上角坐标的y值*/pScroll->setGeometry(0,53,width(),height()-4*ui.statusBar->height());ui.centralWidget->setMinimumSize(width(),height()-4*ui.statusBar->height());}}
3.显示效果