我有一个带有自定义小部件的QStackedWidget。
//mainwindow.h
private:
CentralWidget m_centralWidget;
//mainwindow.cpp
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->stackedWidget->addWidget(&m_centralWidget);
}
现在我想创建一个QSplitter,用内容填充Splitter并将此Splitter添加到StackedWidget。
CentralWidget::CentralWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::CentralWidget)
{
ui->setupUi(this);
connect(ui->pbAddSplit, SIGNAL(pressed()), this, SLOT(addSplit()));
}
void CentralWidget::addSplit()
{
QWidget* parent = parentWidget();
QStackedWidget* stackedWidget = qobject_cast<QStackedWidget*>(parent);
if(!stackedWidget) {
return;
}
QSplitter* splitter = new QSplitter(Qt::Vertical);
splitter->addWidget(new QLabel("Banana"));
splitter->addWidget(this);
int nIndex = stackedWidget->addWidget(splitter);
stackedWidget->setCurrentIndex(nIndex);
}
结果应该是QLabel(“Banana”)作为拆分器的一个Widget,而CentralWidget作为另一个拆分器小部件。 但我只是得到了QLabel(“Banana”) - SplitterHandle和CentralWidget以某种方式迷失了......
splitter-&gt; addWidget(this)显然是错误的...... 用 splitter-&gt; addWidget(新的QLabel(“Cherry”))替换它将导致一个正确的SplitterWidget ......
问题似乎是养育子女,但我无法弄明白。 任何建议都是最受欢迎的!