Qt使用findChild函数,使用循环遍历访问多个控件

使用场景:

  • 在工程中通常都会碰到需要访问大量且功能重复的控件,比如更改label的显示文本,改变颜色等。
  • Qt中findChild函数可以很方便的实现这一步骤。

代码说明:

  • 用QLabel模拟IO信号灯,需要在读取到低电平时让IO信号灯呈现绿色。
  • UI中Label的名字统一为"led_x"( x为数字 ).
for(int i=0; i<16; i++)
{
	// label名字为led_0、led_1...led_15
	QLabel *led = this->findChild<QLabel *>("led_"+QString::number(i));
	// 设置IO端口对应led灯为绿色
	led->setStyleSheet("background:green");  
}
  • 也可以通过循环遍历访问所有的控件
QObject obj = this->children();
for(int i=0; i<obj.size(); i++)
{
	qDebug() << obj[i]->objectName();
}

你可能感兴趣的:(QT)