4
私はQTabWidget
を持っています。各タブのウィジェットはQPlainTextEdit
です。だから、どのように私は各タブウィジェットにアクセスするのですか?そのウィジェットを編集するにはどうすればいいですか?QTabWidgetのタブのウィジェットにアクセスする
私はQTabWidget
を持っています。各タブのウィジェットはQPlainTextEdit
です。だから、どのように私は各タブウィジェットにアクセスするのですか?そのウィジェットを編集するにはどうすればいいですか?QTabWidgetのタブのウィジェットにアクセスする
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);
ありがとうございました^ _^ – Kazuma
現在のタブの(pWidget)テキストにアクセスするにはどうすればよいですか?私は本当にそれを必要としています.... – Engo
アドバイス: 'QWidget * pWidget = ui-> tabWidget-> widget(1);'を使わず、代わりに 'QWidget * pWidget = ui-> tabWidget-> findChildを使用してください(" your_tab_object_name " ); '。これにより、コードが意図したとおりに動く場合でも確実に動作します。タブを並べ替える瞬間(コードによって、または移動可能にする)、最初のコードは実際に必要なタブを返すことができません。 –
rbaleksandar