2016-03-20 1 views
1

スプリッターに関する私の調査を示す前例。私はmainWindow(レイアウトなし)に9つのtextEditを持っています。私は動的レイアウトを作成します。 a)ユーザーは、表示する要素の数を選択します。 b)スプリッタが残っているので、私はhide要素を使いたくありません。 c)QTDesignerで静的レイアウトを作成する方法を知りましたスプリッターの使い方

私の問題は手動レイアウトです。将来私は最初の2つのtextEditsを表示する必要があります。次に、4テックスエディットなど...

この例では、splitter5が完全なウィンドウサイズではないという問題があります。 MainWindowマージンはsplitter5と関連付けられていません。

問題はどこで分かっていますか? また、これが正しい方法であるかどうかはわかりません。多分もっと良い解決策がありますか?

#include "mainwindow.h" 
#include "ui_mainwindow.h" 
#include <QSplitter> 
#include <QGridLayout> 

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 

    QSplitter *splitter1 = new QSplitter(Qt::Horizontal); 
    QSplitter *splitter2 = new QSplitter(Qt::Horizontal); 
    QSplitter *splitter3 = new QSplitter(Qt::Horizontal); 
    QSplitter *splitter4 = new QSplitter(Qt::Vertical); 
    QSplitter *splitter5 = new QSplitter(Qt::Vertical); 


    splitter1->addWidget(ui->textEdit); 
    splitter1->addWidget(ui->textEdit_2); 
    splitter1->addWidget(ui->textEdit_3); 

    splitter2->addWidget(ui->textEdit_4); 
    splitter2->addWidget(ui->textEdit_5); 
    splitter2->addWidget(ui->textEdit_6); 

    splitter3->addWidget(ui->textEdit_7); 
    splitter3->addWidget(ui->textEdit_8); 
    splitter3->addWidget(ui->textEdit_9); 

    splitter4->addWidget(splitter1); 
    splitter4->addWidget(splitter2); 

    splitter5->addWidget(splitter3); 
    splitter5->addWidget(splitter4); 

    this->layout()->addWidget(splitter5); 
} 

MainWindow::~MainWindow() 
{ 
    delete ui; 
} 

問題が矢印 enter image description here

答えて

1

の代わりに使用しますが、中央のウィジェットにスプリッターを追加する必要が

this->layout()->addWidget(splitter5); 

でマークされています。 (QMainWindow参照)。あなたはより多くの要素が必要な場合は、

this->setCentralWidget(splitter5); 

中央ウィジェットとしてコンテナを作成し、独自のレイアウトを追加します。あなただけのスプリッタを使用している場合

あなたは中央のウィジェットとしてそれを設定することができます。

+0

ありがとうございました。 – exo

関連する問題