访问QTabWidget中选项卡的小部件

Kaz*_*uma 7 qt qplaintextedit qtabwidget

我有一个QTabWidget,每个标签都有一个QPlainTextEdit小部件.那么,我如何访问每个标签小部件?如何编辑该小部件?

pne*_*zis 13

您可以使用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);
Run Code Online (Sandbox Code Playgroud)

  • 建议:避免使用`QWidget*pWidget = ui-> tabWidget-> widget(1);`而是使用`QWidget*pWidget = ui-> tabWidget-> findChild <QWidget*>("your_tab_object_name");`.这将确保即使在移动时您的代码也能按预期工作.当您重新排列选项卡(通过代码或使其可移动)时,第一段代码将无法返回您实际需要的选项卡. (2认同)