4
我有QTabWidget
,其中每個選項卡都有一個QPlainTextEdit
作爲它的小部件。那麼,我如何訪問每個標籤小部件?如何編輯該小部件?訪問QTabWidget中選項卡的小部件
我有QTabWidget
,其中每個選項卡都有一個QPlainTextEdit
作爲它的小部件。那麼,我如何訪問每個標籤小部件?如何編輯該小部件?訪問QTabWidget中選項卡的小部件
您可以使用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);
非常感謝,這個工作^ _^ – Kazuma 2011-12-30 21:10:59
如何訪問當前標籤的(pWidget)文本?我真的需要它...... – Engo 2016-01-04 22:39:27
建議:避免使用'QWidget * pWidget = ui-> tabWidget-> widget(1);'而是使用'QWidget * pWidget = ui-> tabWidget-> findChild(「your_tab_object_name」 );'。這將確保即使在移動時您的代碼也能按預期工作。當你重新排列標籤頁(通過代碼或使它們移動)的第一段代碼將無法返回你真正想要的標籤頁。 –
rbaleksandar
2016-07-12 10:49:52