在QStackedWidget中插入QSplitter

时间:2015-07-07 10:37:19

标签: c++ qt

我有一个带有自定义小部件的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 ......

问题似乎是养育子女,但我无法弄明白。 任何建议都是最受欢迎的!

0 个答案:

没有答案