为更清楚地说明我的问题,我已经完成了屏幕截图,上面有一些注释,希望对您有所帮助:
QGroupBox布局格式问题
从中可以看到,我的应用程序主布局有一个大的QVBoxLayout
,在其中放置了Qwidget
,然后是QGridLayout
,然后是再次QGridLayout
。
在最后一个QGridLayout
中,我放入了两个QGroupBoxes
,一个位于0,0位置,另一个位于0,1位置。每个QGroupBox
都有自己的内部布局,两者均为QGridLayout
类型。
该屏幕截图显示,第一QGroupBox
效果很好,而第二个要比第一个小得多,但有两个问题:
1)标签应该是“ Specific Operations”(特定操作),但它是中继的,要完全显示它,唯一的方法似乎是将按钮水平地并排放置……但是我不想要它!
2)我设法将QGroupbox
对齐到其“网格”的左侧,但是我需要将其放在它的左上角,同时暂时将其居中...如何实现此目的? ?
这是应帮助您理解的代码的一部分。这是kalk.h文件:
class Kalk : public QWidget
{
Q_OBJECT
public:
Kalk(QWidget *parent = 0);
private slots:
void kalkChange(QString);
//....
private:
QComboBox *chooser;
QVBoxLayout *mainLayout;
QGridLayout *subLayout;
QGridLayout *operationsLayout;
QGroupBox *baseOperators;
QGridLayout *baseOperatorsLayout;
QGroupBox *specificOperators;
QGridLayout *specificOperatorsLayout;
};
然后是相应的kalk.cpp文件:
Kalk::Kalk(QWidget *parent) : QWidget(parent){
chooser = new QComboBox();
//...
connect(chooser,SIGNAL(currentIndexChanged(QString)),this,SLOT(kalkChange(QString)));
mainLayout = new QVBoxLayout;
mainLayout->setSizeConstraint(QLayout::SetFixedSize);
subLayout = new QGridLayout;
subLayout->setEnabled(false);
subLayout->setSizeConstraint(QLayout::SetFixedSize);
mainLayout->addWidget(chooser);
mainLayout->addLayout(subLayout);
//operationsLayout = new QHBoxLayout;
operationsLayout = new QGridLayout;
operationsLayout->setSizeConstraint(QLayout::SetFixedSize);
baseOperators = new QGroupBox(tr("Base Operations"));
baseOperatorsLayout = new QGridLayout(baseOperators);
baseOperatorsLayout->setSizeConstraint(QLayout::SetFixedSize);
specificOperators = new QGroupBox(tr("Specific Operations"));
specificOperatorsLayout = new QGridLayout(specificOperators);
specificOperatorsLayout->setSizeConstraint(QLayout::SetFixedSize);
operationsLayout->addWidget(baseOperators,0,0);
operationsLayout->setAlignment(baseOperators,Qt::AlignLeft);
operationsLayout->addWidget(specificOperators,0,1);
operationsLayout->setAlignment(specificOperators,Qt::AlignLeft);
mainLayout->addLayout(operationsLayout);
setLayout(mainLayout);
//...
}
在另一个函数中,我将按钮加载到QGroupBox的Layout内,但我不认为问题出在这里...