对于这种界面,要对label一个个设置
你是不是还在写这种代码呢?
我今天学到一种通用方法,在此记录一下
简单两行代码搞定,findChild源码如下(该方法应定义在一个通用类中):
template<typename T>
inline T findChild(const QString &aName = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const
{
// 定义一个名为 ObjType 的新类型,该类型是模板参数 T 经过去除指针和 const / volatile 修饰符后的结果
typedef typename QtPrivate::remove_cv<typename QtPrivate::remove_pointer<T>::type>::type ObjType;
return static_cast<T>(qt_qFindChild_helper(this, aName, ObjType::staticMetaObject, options));
}
template<typename T>
inline QList<T> findChildren(const QString &aName = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const
{
typedef typename QtPrivate::remove_cv<typename QtPrivate::remove_pointer<T>::type>::type ObjType;
QList<T> list;
qt_qFindChildren_helper(this, aName, ObjType::staticMetaObject,
reinterpret_cast<QList<void *> *>(&list), options);
return list;
}
其中,qt_qFindChild_helper 和 qt_qFindChildren_helper 为Qt 框架中的内部函数,用于在对象的子对象中查找特定名称的对象,它们在类外声明
Q_CORE_EXPORT void qt_qFindChildren_helper(const QObject *parent, const QRegularExpression &re,
const QMetaObject &mo, QList<void *> *list, Qt::FindChildOptions options);
Q_CORE_EXPORT QObject *qt_qFindChild_helper(const QObject *parent, const QString &name, const QMetaObject &mo, Qt::FindChildOptions options);
此外,也可以根据不同的规则写类似的接口
因篇幅问题不能全部显示,请点此查看更多更全内容