【问题标题】:Qt4 - The same connect for different progressBar, emit make the same value for eachQt4 - 不同progressBar的相同连接,为每个发出相同的值
【发布时间】:2013-08-08 22:13:28
【问题描述】:

我有多个QProgressBar*,如下所示:

void MainWindow::newProgressBar()
{
    QProgressBar *progressBar = new QProgressBar();

    QObject::connect(this, SIGNAL(changeProgressBarValue(int)), progressBar, SLOT(setValue(int)));

    emit changeProgressBarValue((_table->item(newRow, 3)->text().toDouble() - _table->item(newRow, 2)->text().toDouble()) / _table->item(newRow, 3)->text().toDouble() * 100);
}

问题是如果我emit changeProgressBarValue(52),所有的progressBars都会取值52。

我不知道会有多少进度条。它可能是零或一百。

如何为每个设置一个特定的“侦听器/连接”? 我不想为每个都创建一个信号,必须有一个更简单的方法。

【问题讨论】:

    标签: qt4 progress-bar


    【解决方案1】:

    既然你有一个特定的 QProgressBar 想要设置它的值,那么你可以简单地调用:

    progressBar->setValue(52)
    

    【讨论】:

    • 哦,好吧,不知道我可以这样调用插槽。但这并不能解决我的问题,因为我在函数中创建了progressBars,并且没有保存它们的指针。因为我不知道有多少。可能没有,也可能有一百个。发布编辑
    • 您打算如何确定要设置哪个进度条的值?
    • 这就是重点。^^ 到目前为止,我最好的想法是创建一个 ProgressBar 列表。这样我就可以记住要修改哪个值了。
    • 我更多的是询问您如何确定要更新哪个进度条,而不是您如何访问表示该进度条的变量。您需要为每个进度条存储某种参考,因此您创建的进度条列表将是一种方法。
    • 哦,但我很笨!我想我可以访问这个progressBars,即使我没有将它们保存在列表中。我可以访问他们的容器,所以我可以“找到”好的那个。
    猜你喜欢
    • 2019-03-07
    • 2021-01-04
    • 1970-01-01
    • 2013-08-01
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 2022-10-22
    • 1970-01-01
    相关资源
    最近更新 更多