我希望能够更新超过100个标签,所以我打算将它们放在这样的数组中:
voltage_label_array[0] = this->ui->Voltage_0;
voltage_label_array[1] = this->ui->Voltage_1;
voltage_label_array[...] = this->ui->Voltage_2;
voltage_label_array[...n] = this->ui->Voltage_n;
然后有这个方法
void MainWindow::updateValue(int i, int voltage){
voltage_label_array[i]->setText(QString::number(voltage));
}
但有100行来设置它似乎是一个坏主意。有没有办法在for循环中初始化QLabel
数组?
答案 0 :(得分:2)
如果你需要这样做,你的设计就会出现严重错误。但这是有可能的。
假设您的标签被命名为Voltage_0
到Voltage_99
:
for(int i = 0; i < 100; ++i) {
auto ptr = this->findChild<QLabel*>(QString("Voltage_%1").arg(i));
voltage_label_array[i] = ptr;
}
这个&#34;解决方案&#34;使用Qt的运行时反射并承担预期的性能损失。
但是如果你需要显示几个相似的值,请查找QListWidget
和类似的类。