建设银行河北分行招聘网站,可以下载新闻视频的网站,百度建网站,关于网站建设的书使用QObject及其子类创建的对象是以对象树的形式来组织的。创建一个QObject对象时若设置一个父对象#xff0c;它就会被添加到父对象的子对象列表里#xff0c;一个父对象被删除时#xff0c;其全部的子对象都会自动删除。QObject类的构造函数里有一个参数用于设置对象的父对… 使用QObject及其子类创建的对象是以对象树的形式来组织的。创建一个QObject对象时若设置一个父对象它就会被添加到父对象的子对象列表里一个父对象被删除时其全部的子对象都会自动删除。QObject类的构造函数里有一个参数用于设置对象的父对象还有一些函数可以在运行时访问对象树中的对象
(1)函数childern()。返回对象的子对象列表函数定义如下
const QObjectList QObject::children();
函数的返回值是QObjectList类型就是QObject类型指针列表定义如下
typedef QListQObject* QObjectList; 对于界面上的容器类组件容器内的所有组件(包括内部的布局组件)都是其子对象。可以通过children()函数来访问组件内的所有的子对象。例如以下代码访问groupBox容器内的所有组件
QObjectList objList ui-groupbox-children(); //获取子对象列表for(int i 0;i objList.size();i){const QMetaObject *meta objList.at(i)-metaObject(); //获取元对象QString className QString(meta-className()); //获取子对象的类名称if(className QPushButton){QPushButton *btn qobject_castQPushButton*(objList.at(i));/*** 获取到QPushButton指针可以对当前btn进行一些操作 ****/QString str btn-text();btn-setText(str ***); //更新按钮显示文字}if(className QSpinBox){QSpinBox *spin qobject_castQSpinBox*(objList.at(i));//如果是QSpinBox组件获得QSpinBox*指针然后可以进行一些操作spin-setValue(0); //更新当前SpinBox的值}}
(2) 函数findChild()。在对象的子对象中查找可以转换为类型T的子对象定义如下
templatetypename TT QObject::findChild(const QString name QString(),Qt::FindChildOptions options Qt::FindChildrenRecursively); 参数name是子对象的名称参数options表示查找方式默认在子对象中递归查找也就是会查找子对象的子对象。若设置为Qt::FindDirectChildrenOnly表示只查找直接子对象。 例如
QPushButton *btn this-findChildQPushButton*(btnOK);//查找窗口上对象名称为btnOK的QPushButton按钮默认递归查找只要窗口上有按钮btnOK,就可以找到这个对象
(3)函数fidChildren()。用于在对象的子对象中查找可以转换为类型T的子对象可以指定对象名称也可以使用正则表达式(QRegularExpression)来匹配对象名称。如果不设置要查找的对象名称就返回所有能转换为灯型T的对象。函数原型定义如下
template typename T QListT QObject::findChildren(const QString name QString(),Qt::FindChildOptions options Qt::FindChildrenRecursively);template typename T QListT QObject::findChildren(const QRegularExpression re,Qt::FindChildOptions options Qt::FindChildrenRecursively);
例如下面代码找到分组框内的所有的QPushButton按钮组件
QListQPushButton* btnList ui-groupBox-findChildrenQPushButton*();//获取QPushButton组件列表
for(int i 0;i btnList.size();i){
//列表内均为QPushButton组件因此无需进行类名判断和类型转换QPushButton *btn btnList.at(i);QString str btn-text();btn-setText(str ***);
}