Доступ к виджету вкладки в QTabWidget - PullRequest
7 голосов
/ 30 декабря 2011

У меня есть QTabWidget, где каждая вкладка имеет QPlainTextEdit в качестве виджета.Итак, как мне получить доступ к каждому виджету вкладок?Как мне отредактировать этот виджет?

1 Ответ

12 голосов
/ 30 декабря 2011

Вы можете использовать функцию widget для QTabWidget, чтобы получить виджет с указанным индексом вкладки.

Если QPlainTextEdit является единственным виджетом на каждой вкладке, то возвращаемый виджет будет таким. В противном случае вам нужно получить children виджета и найти в них QPlainTextEdit.

QPlainTextEdit* pTextEdit = NULL;
QWidget* pWidget= ui->tabWidget->widget(1); // for the second tab
// You can use metaobject to get widget type or qobject_cast
if (pWidget->metaObject()->className() == "QPlainTextEdit")
    pTextEdit = (QPlainTextEdit*)pWidget;
else
{
    QList<QPlainTextEdit *> allTextEdits = pWidget->findChildren<QPlainTextEdit *>();
    if (allTextEdits.count() != 1)
    { 
        qError() << "Error";
        return;
    }  
    pTextEdit = allTextEdits[0];
}

// Do whatever you want with it...
ptextEdit->setPlainText("Updated Plain Text Edit);
...