Qt界面如何布局
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关于Qt界面中对于相关控件进行布局管理
在用Qt进行用户界面应用程序的编程时,建议通过编写相关代码来生成和维护Qt控件,而不要用Qt Designer。这时对相应的Qt控件进行布局管理显得尤为重要。
常见的三种布局方式:
网格布局:QGridLayout
水平布局:QHBoxLayout
垂直布局:QVBoxLayout
步骤:
1)以单个的Qt控件为单位,先进行子块布局,分别对各个子块进行布局。
2)以步骤1)中的子块为单位,进行全局布局。
例如:我们要完成如下样式的Qt界面,整个Qt界面有ABCDEFXYZ共计9个Qt控件。
方法1:
1)用“网格布局”对ABCDEF(子块1)进行布局
QGridLayout *leftLay=new QGridLayout;
用“垂直布局”对XYZ(子块2)进行布局
QVBoxLayout *rightLay=new QVBoxLayout;
2)用“水平布局”对子块1(ABCDEF)、子块2(XYZ)进行全局布局
QHBoxLayout *mainLay=new QHBoxLayout;
mainLay->addLayout(leftLay);
mainLay->addLayout(rightLay);
方法2:
1)用“水平布局”对AB(子块1)进行布局
用“水平布局”对CD(子块2)进行布局
2)用“垂直布局”对子块1(AB)、子块2(CD)、E、F进行布局,形成子块3(ABCDEF)。3)用“垂直布局”对XYZ(子块4)进行布局
4)用“水平布局”对子块3(ABCDEF)、子块4(XYZ)进行全部布局
方法1:
QGridLayout *leftLay=new QGridLayout;
leftLay->addWidget(hostLabel,0,0);
leftLay->addWidget(hostLineEdit,0,1);
leftLay->addWidget(portLabel,1,0);
leftLay->addWidget(portLineEdit,1,1);
leftLay->addWidget(myCheckBox,2,0,1,2);
leftLay->addWidget(myListWidget,3,0,1,2);
leftLay->addWidget(msgLabel,4,0,1,2);
QVBoxLayout *rightLay=new QVBoxLayout;
rightLay->addWidget(logButton);
rightLay->addWidget(sendButton);
rightLay->addWidget(linkButton);
QHBoxLayout *mainLay=new QHBoxLayout;
mainLay->addLayout(leftLay);
mainLay->addLayout(rightLay);
setLayout(mainLay);
方法2:
QHBoxLayout *lay1=new QHBoxLayout;
lay1->addWidget(hostLabel);
lay1->addWidget(hostLineEdit);
QHBoxLayout *lay2=new QHBoxLayout;
lay2->addWidget(portLabel);
lay2->addWidget(portLineEdit);
QVBoxLayout *lay3=new QVBoxLayout;
lay3->addLayout(lay1);
lay3->addLayout(lay2);
lay3->addWidget(myListWidget);
lay3->addWidget(msgLabel);
QVBoxLayout *rightLay=new QVBoxLayout;
rightLay->addWidget(logButton);
rightLay->addWidget(sendButton);
rightLay->addWidget(linkButton);
QHBoxLayout *mainLay=new QHBoxLayout;
mainLay->addLayout(lay3);
mainLay->addLayout(rightLay);
setLayout(mainLay);