2012-12-29 120 views
0

這很奇怪。使用此代碼 ,我試圖將標籤添加到QTabWidget:Tab沒有被添加到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

基本上你的代碼做的是:

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

而且因爲小部件只能在一個地方的時間,一旦你把它添加到滾動面板,它是從QTabWidget刪除,你只要把它。

但是,您可以創建一個新的QTextEdit,它將使用QTextEdit::document()/setDocument()共享相同的基礎QTextDocument

+0

哇...我不知道一個QWidget只能在一個地方!謝謝。 – MirroredFate