1
名前で親オブジェクトを取得するにはどうすればよいですか? QWidget::parentWidget()
は1レベル上に移動します。むしろQObject::findChild()
に相当する再帰的な検索が必要です。オブジェクト名で親ウィジェットを取得
名前で親オブジェクトを取得するにはどうすればよいですか? QWidget::parentWidget()
は1レベル上に移動します。むしろQObject::findChild()
に相当する再帰的な検索が必要です。オブジェクト名で親ウィジェットを取得
QWidget
はQObject
のでQObject::objectName
あなたは多少以下のようにfree関数を作成することにより、親ツリーを再帰的にすることができ、すべてのQWidgets
(これは未テストコードであることに注意)
QWidget* parentByName(QWidget* widget, QString name)
{
widget = parentWidget();
if (widget && widget->objectName() != name)
return parentByName(widget, name);
return widget;
}
この意志に利用可能であるが継承されますあなたが探しているウィジェット、または見つからないイベントのnullptrを返します。
この目的のために実装された関数はないと言っていいですか? –
これは、[ドキュメント](http://doc.qt.io/qt-5/qwidget-members.html)で最もよく質問される質問です。「親」を検索し、 –
が最初のスニペットで見つかったものを参照してください。再帰呼び出しの場合は 'return parent-> parentByName(name);'を意味しますか?そうでなければ、スタックオーバーフローするまで同じパラメータで同じ関数を呼び出しているだけです。 – user463035818