我认为这可能是两个分开的问题。在Qt4.8中,QFormLayout
是
QFormLayout类管理输入窗口小部件及其相关标签的形式。
QFormLayout是一个便利的布局类,它以两列的形式布置其子元素。左列由标签组成,右列由“字段”小部件组成(行编辑器,旋转框等)。
以下图为指导,
1)如何创建两个可折叠的面板,可以相应折叠?就像两个蓝色矩形?我尝试了QGroupBox
,但其中没有任何可折叠的属性。
2)如何使两个分开的QFormLayout
具有相同的标签和字段比例,即使它们属于不同的可折叠面板?如附图所示,我们可以告诉这两个formlayouts是否对齐,如绿线所示。
答案 0 :(得分:0)
我希望您拥有可折叠的代码,并且只需要QFormLayout
的代码。我相信这应该可以解决问题。
标题文件:
#pragma once
#include <QtGui>
#include <QtCore>
class newQtApp : public QMainWindow {
Q_OBJECT
public :
newQtApp();
};
来源
newQtApp::newQtApp() : QMainWindow() {
cout << "Im being initialized...." << endl;
cout << "Setting window properties..." << endl;
QFormLayout *fLyt1 = new QFormLayout();
fLyt1->setLabelAlignment( Qt::AlignRight );
for( int i = 0; i < 5; i++ ) {
QLabel *lbl = new QLabel( QString( "Lyt 1, Label %1:" ).arg( i + 1), this );
lbl->setFixedWidth( 150 );
lbl->setAlignment( Qt::AlignRight );
fLyt1->addRow( lbl, new QLineEdit() );
}
QGroupBox *w1 = new QGroupBox( "First Collapsible", this );
w1->setLayout( fLyt1 );
QFormLayout *fLyt2 = new QFormLayout();
fLyt2->setLabelAlignment( Qt::AlignRight );
for( int i = 0; i < 5; i++ ) {
QLabel *lbl = new QLabel( QString( "Second Layout, Label %1:" ).arg( i + 1), this );
lbl->setFixedWidth( 150 );
lbl->setAlignment( Qt::AlignRight );
fLyt2->addRow( lbl, new QCheckBox( "Check this out!!" ) );
}
QGroupBox *w2 = new QGroupBox( "Second Collapsible", this );
w2->setLayout( fLyt2 );
QVBoxLayout *baseLyt = new QVBoxLayout();
baseLyt->addWidget( w1 );
baseLyt->addWidget( w2 );
QWidget *base = new QWidget( this );
base->setLayout( baseLyt );
setCentralWidget( base );
};