オブジェクト名からどのようにコントロールを取得するか
Qtでは、QObject::findChild()メソッドやQObject::findChildren()メソッドを使用して、オブジェクト名を使ってウィジェットを取得できます。
オブジェクト名を知っており、コントロールを1つのみ取得する必要がある場合は`QObject::findChild()`メソッドを使用します。このメソッドは、検索するオブジェクト名を表す文字列パラメータを受け取ります。一致するオブジェクトが見つかれば、そのオブジェクトへのポインタが返され、見つからなければnullptrが返されます。
QWidget *widget = findChild<QWidget*>("widgetName");
if (widget) {
// 找到了控件
} else {
// 没有找到控件
}
QObject::findChildren()メソッドを使用すると、すべての一致するウィジェットを取得できます。このメソッドは、検索したいオブジェクト名を表す文字列パラメータも受け付けます。一致するウィジェットすべてへのポインターを含むQListを返します。
QList<QWidget*> widgets = findChildren<QWidget*>("widgetName");
if (!widgets.isEmpty()) {
// 找到了控件
foreach (QWidget *widget, widgets) {
// 对每个控件进行处理
}
} else {
// 没有找到控件
}
注意、findChild()とfindChildren()メソッドは、QObjectを継承したクラスのみで使用できます。Windowsクラスで使用する場合は、this->findChild()またはthis->findChildren()メソッドを直接呼び出すことができます。