Сложенный виджет - это контейнерный виджет, который содержит другой виджет. В ваших настройках вы, кажется, используете два сложенных виджета: виджет QWebKit и QTreeWidget.
Чтобы они отображались в QMainWindow
, необходимо установить центральный виджет QMainWindow
в качестве виджета с накоплением и использовать слот QStackedWidget::changeCurrentIndex()
для перехода от первого виджета к другому.
Вот пример кода с использованием QPushButton
и QLabel
в качестве элементов составного виджета.
QMainWindow *mainWindow = new QMainWindow();
QStackedWidget *stackedWidget = new QStackedWidget();
// stacked item 0
QPushButton *pushButton = new QPushButton("Here is a button");
stackedWidget->addItem(pushButton);
// stacked item 1
QLabel *label = new QLabel("Here is a label");
stackedWidget->addItem(label);
// add the stacked widget to the main window
mainWindow->setCentralWidget(stackedWidget);
Чтобы изменить текущий отображаемый элемент с кнопки на метку, вы можете использовать:
stackedWidget->setCurrentIndex(1); // go to the label widget
stackedWidget->setCurrentIndex(0); // go back to the button widget
Альтернативный ответ на комментарии. Вы уверены, что хотите использовать сложенный виджет? На самом деле, стекирующий виджет специализирован для создания вкладки, подобной презентации виджета. Если вы хотите переключиться с одного виджета на другой, вы можете напрямую использовать метод QMainWindow :: setCentralWidget (), как показано в следующем коде.
QMainWindow *mainWindow = new QMainWindow();
QVector< QWidget* > widgets;
// stacked item 0
QPushButton *pushButton = new QPushButton("Here is a button");
// stacked item 1
QLabel *label = new QLabel("Here is a label");
widgets << pushButton << label;
// add the first widget to the main window
mainWindow->setCentralWidget(widgets[0]);
Если вы хотите переключиться на другой виджет, вы можете использовать:
mainWindow->setCentralWidget(widgets[1]);