访问QTabWidget中选项卡的小部件

访问QTabWidget中选项卡的小部件

问题描述:

我有QTabWidget,其中每个选项卡都有一个QPlainTextEdit作为它的小部件。那么,我如何访问每个标签小部件?如何编辑该小部件?访问QTabWidget中选项卡的小部件

您可以使用QTabWidgetwidget函数来获取指定选项卡索引处的小部件。

如果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); 
+0

非常感谢,这个工作^ _^ – Kazuma 2011-12-30 21:10:59

+1

如何访问当前标签的(pWidget)文本?我真的需要它...... – Engo 2016-01-04 22:39:27

+1

建议:避免使用'QWidget * pWidget = ui-> tabWidget-> widget(1);'而是使用'QWidget * pWidget = ui-> tabWidget-> findChild (“your_tab_object_name” );'。这将确保即使在移动时您的代码也能按预期工作。当你重新排列标签页(通过代码或使它们移动)的第一段代码将无法返回你真正想要的标签页。 – rbaleksandar 2016-07-12 10:49:52