选项卡未添加到QTabWidget

时间:2012-12-29 19:39:12

标签: qt qtabwidget

这很奇怪。 使用此代码,我试图向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);
}

和internalChange:

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

现在,当我添加选项卡“tabqx”时,它可以工作,当我将scrollPanel的小部件设置为panel->getWidget()时,它可以工作。但是,当我尝试添加选项卡“nT”时,它不起作用。我很迷茫。我应该注意panel->getWidget()会返回QWidget,这可能是预期的。在这个例子中,它将返回QTextEdit。此外,MainWindow::main是静态QTabWidget

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

1 个答案:

答案 0 :(得分:1)

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

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

由于窗口小部件一次只能放在一个位置,因此一旦将其添加到滚动面板,它就会从您放置它的QTabWidget中删除。

但是,您可以使用QTextEdit::document()/setDocument()创建一个新的QTextEdit,以便共享相同的基础QTextDocument