关于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);
因篇幅问题不能全部显示,请点此查看更多更全内容