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」を追加すると機能し、scrollPanel のウィジェットを設定するpanel->getWidget()と機能します。ただし、タブ「nT」を追加しようとすると機能しません。私は非常に混乱しています。予想どおり、 がをpanel->getWidget()返すことに注意してください。QWidgetこの場合、具体的には、 を返しますQTextEdit。また、MainWindow::main静的QTabWidgetです。

だから私の質問は、タブ「nT」が追加されていないのはなぜですか?

4

1 に答える 1

1

基本的にあなたのコードはそれを行います:

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

また、ウィジェットは一度に 1 つの場所にしか配置できないため、スクロール パネルに追加すると、配置したQTabWidget場所から削除されます。

ただし、 QTextEdit::document()/setDocument()を使用してQTextEdit、同じ基礎を共有する新しいものを作成できます。QTextDocument

于 2012-12-29T20:22:43.947 に答える