这很奇怪。 使用此代码,我试图向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”?
答案 0 :(得分:1)
基本上你的代码就是这样:
MainWindow::main->addTab(panel->getWidget(), "nT");
ui->scrollPanel->setWidget(panel->getWidget());
由于窗口小部件一次只能放在一个位置,因此一旦将其添加到滚动面板,它就会从您放置它的QTabWidget
中删除。
但是,您可以使用QTextEdit::document()/setDocument()创建一个新的QTextEdit
,以便共享相同的基础QTextDocument
。