3

私の問題をより明確に説明するために、いくつかのメモを含むスクリーンショットを作成しました。

QGroupBox レイアウト形式の問題

ご覧のとおりQVBoxLayout、アプリのメイン レイアウト用に 1 つの大きなレイアウトがあり、その中にQwidget、次に 、QGridLayoutそしてQGridLayout再び を配置しました。この最後の oneQGridLayoutの中に 2 つQGroupBoxes、1 つは位置 0,0 に、もう 1 つは位置 0,1 に配置しました。それぞれQGroupBoxに独自の内部レイアウトがあり、両方ともQGridLayoutタイプがあります。

QGroupBoxスクリーンショットは、最初のものはうまく機能することを示していますが、最初のものよりもかなり小さい 2 番目のものには 2 つの問題があります。ボタンを横に並べて配置する必要があります...しかし、私はそれを望んでいません! 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 のレイアウト内にボタンをロードしますが、問題はここにあるとは思いません...

4

0 に答える 0