选项卡未添加到 QTabWidget
Posted
技术标签:
【中文标题】选项卡未添加到 QTabWidget【英文标题】:Tab not being added to QTabWidget 【发布时间】:2012-12-29 19:39:12 【问题描述】:这很奇怪。 使用此代码,我正在尝试向 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()
返回一个QWidget
,正如预期的那样。具体来说,在这种情况下,它将返回一个QTextEdit
。另外,MainWindow::main
是静态的QTabWidget
。
所以我的问题是,为什么没有添加标签“nT”?
【问题讨论】:
【参考方案1】:基本上你的代码就是这样做的:
MainWindow::main->addTab(panel->getWidget(), "nT");
ui->scrollPanel->setWidget(panel->getWidget());
由于一个小部件一次只能在一个地方,一旦你将它添加到滚动面板,它就会从你刚刚放置它的QTabWidget
中删除。
但是,您可以使用QTextEdit::document()/setDocument() 创建一个新的QTextEdit
,该QTextDocument
将共享相同的底层QTextDocument
。
【讨论】:
哇...我不知道 QWidget 一次只能在一个地方!谢谢。以上是关于选项卡未添加到 QTabWidget的主要内容,如果未能解决你的问题,请参考以下文章