2011-12-30 37 views

答えて

10

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

ありがとうございました^ _^ – Kazuma

+1

現在のタブの(pWidget)テキストにアクセスするにはどうすればよいですか?私は本当にそれを必要としています.... – Engo

+1

アドバイス: 'QWidget * pWidget = ui-> tabWidget-> widget(1);'を使わず、代わりに 'QWidget * pWidget = ui-> tabWidget-> findChildを使用してください(" your_tab_object_name " ); '。これにより、コードが意図したとおりに動く場合でも確実に動作します。タブを並べ替える瞬間(コードによって、または移動可能にする)、最初のコードは実際に必要なタブを返すことができません。 – rbaleksandar

関連する問題