繁体   English   中英

如何高效地初始化100个QLabel

[英]How to initialize over a 100 QLabel in an efficient way

我想有能力更新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数组?

如果您需要执行此操作,则您的设计存在严重错误。 但是有可能。

假设您的标签名为Voltage_0Voltage_99

for(int i = 0; i < 100; ++i) {
    auto ptr = this->findChild<QLabel*>(QString("Voltage_%1").arg(i));
    voltage_label_array[i] = ptr;
}

该“解决方案”使用了Qt的运行时反射,并带有预期的性能损失。

但是,如果需要显示几个相似的值,请查找QListWidget和相似的类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM