0

这很奇怪。使用此代码,我正在尝试向 QTabWidget 添加一个选项卡:

void SideWidget::changePanel(SearchablePanel* panel){
    ui->nextButton->setEnabled(false);
    cout << pointer;
    widgetHistory[++pointer] = panel;
    QWidget* widget = panel->getWidget();
    cout << panel->id;
    MainWindow::main->addTab(widget, "nT");
    QTextEdit* thing = new QTextEdit("Test");

    MainWindow::main->addTab(thing, "tabqx");
    this->internalChange(panel);
}

和内部变化:

void SideWidget::internalChange(SearchablePanel *panel){
    cout << "internale change, "+panel->id;
    ui->scrollPanel->setWidget(panel->getWidget());
    ui->prevButton->setEnabled(true);
}

现在,当我添加选项卡“tabqx”时,它可以工作,并且当我将滚动面板的小部件设置为panel->getWidget()它时,它可以工作。但是,当我尝试添加选项卡“nT”时,它不起作用。我很迷茫。我应该注意到panel->getWidget()返回 a QWidget,正如预期的那样。具体来说,在这种情况下,它将返回一个QTextEdit. 另外,MainWindow::main是静态的QTabWidget

所以我的问题是,为什么没有添加标签“nT”?

4

1 回答 1

1

基本上你的代码是这样做的:

MainWindow::main->addTab(panel->getWidget(), "nT"); 
ui->scrollPanel->setWidget(panel->getWidget());

而且由于一个小部件一次只能在一个地方,一旦你将它添加到滚动面板,它就会从QTabWidget你刚刚放置的地方删除。

However you could create a new QTextEdit that would share the same underlying QTextDocument by using QTextEdit::document()/setDocument().

于 2012-12-29T20:22:43.947 回答