关键代码 QList<①*> list = ②->findChildren<①*>(③); ①需要一个控件类型,可以是QLabel、QPushButton、QWidget等 ②需要一个QWigdet类型的界面地址,可以是this即当前主界面,或者ui->widget…等,即某个子界面 ③需要一个控件名字,QString类型,即通过setObjectName设置的名字,当然也可以为空,为空则表示界面下①类型的所有控件 例如: QList<QPushButton*> buttonList = this->findChildren<QPushButton*>(“button”); buttonList接收的是,this界面中QPushButton类型,名字叫buttom的控件列表。 实例代码演示: .ui文件 .cpp文件
# include "widget.h"
# include "ui_widget.h"
Widget :: Widget ( QWidget * parent)
: QWidget ( parent)
, ui ( new Ui:: Widget)
{
ui-> setupUi ( this ) ;
ui-> pushButton_close-> setObjectName ( "button" ) ;
ui-> pushButton_max-> setObjectName ( "button" ) ;
ui-> pushButton_min-> setObjectName ( "button" ) ;
QList< QPushButton* > buttonList = this -> findChildren< QPushButton* > ( "button" ) ;
for ( int i = 0 ; i < buttonList. size ( ) ; i++ )
{
QPushButton* tmp = buttonList. at ( i) ;
tmp-> setFixedSize ( 20 , 20 ) ;
}
ui-> label-> setObjectName ( "label" ) ;
ui-> label_2-> setObjectName ( "label" ) ;
ui-> label_3-> setObjectName ( "label" ) ;
QList< QLabel* > labelList = this -> findChildren< QLabel* > ( "label" ) ;
for ( int i = 0 ; i < labelList. size ( ) ; i++ )
{
QLabel* tmp = labelList. at ( i) ;
tmp-> setText ( "hello" ) ;
}
ui-> widget-> setObjectName ( "widget" ) ;
ui-> widget_2-> setObjectName ( "widget" ) ;
ui-> widget_3-> setObjectName ( "widget" ) ;
QList< QWidget* > widgetList = this -> findChildren< QWidget* > ( "widget" ) ;
for ( int i = 0 ; i < widgetList. size ( ) ; i++ )
{
QWidget* tmp = widgetList. at ( i) ;
tmp-> setStyleSheet ( "background-color:red;" ) ;
}
QList< QObject* > objList = ui-> widget-> findChildren< QObject* > ( ) ;
for ( int i = 0 ; i < objList. size ( ) ; i++ )
{
QObject* tmp = objList. at ( i) ;
tmp-> deleteLater ( ) ;
}
}
Widget :: ~ Widget ( )
{
delete ui;
}
运行图