我有一个 QTabWidget
,每个选项卡都有一个 QPlainTextEdit
作为其部件。那么,如何访问每个选项卡小部件?如何编辑该小部件?
我有一个 QTabWidget
,每个选项卡都有一个 QPlainTextEdit
作为其部件。那么,如何访问每个选项卡小部件?如何编辑该小部件?
您可以使用QTabWidget
的widget
函数来获取指定标签页上的小部件。
如果每个选项卡页面上只有一个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);
QWidget* pWidget= ui->tabWidget->widget(1);
这种方式,而是使用QWidget* pWidget= ui->tabWidget->findChild<QWidget *>("your_tab_object_name");
。这样可以确保即使可移动,您的代码也能按预期工作。当您重新排列标签页(通过代码或使它们可移动)时,第一段代码将无法返回您实际想要的选项卡。 - rbaleksandarqobject_cast<QPlainTextEdit*>
,然后检查结果是否为nullptr,而不是检查元对象的类名。 - Folling