Qt界面如何布局

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);

相关文档
最新文档