Как заменить виджет в Qsplitter другим?

У меня есть один сплиттер и два виджета... я хочу заменить первый виджет сплиттером и вставить в него первый виджет и другой виджет с одинаковым расположением (во время выполнения)

PS: я не могу уронить первый виджет из сплиттера

1 ответ

Решение

Вам не нужен новый сплиттер для замены, так как QSplitter может обрабатывать более 2 виджетов. Скажем, у нас есть два виджета в сплиттере:

QSplitter *splitter = new QSplitter(this);
setCentralWidget(splitter);

QTextEdit *widget0 = new QTextEdit;
QTextEdit *widget1 = new QTextEdit;

splitter->addWidget(widget0);
splitter->addWidget(widget1);

Теперь мы можем поместить третий виджет между этими двумя с помощью:

QTextEdit *widget2 = new QTextEdit;
splitter->insertWidget(1, widget2);

Теперь у нас есть три виджета и два разделителя между ними в порядке widget0, widget2, widget1.

Обновить:

Если ориентация второго сплиттера отличается, чем:

QSplitter *splitter2 = new QSplitter;
splitter2->setOrientation(Qt::Vertical);
QTextEdit *widget2 = new QTextEdit("2");
splitter2->addWidget(widget0);
splitter2->addWidget(widget2);
splitter->insertWidget(0, splitter2);

Результат:

введите описание изображения здесь

Другие вопросы по тегам