QStorageInfo挂起GUI

时间:2017-06-04 15:17:40

标签: c++ qt

在使用mingGW 4.9.2-32位编译的几个Qt应用程序中,我正常运行此例程以检查是否已插入具有特定标签的USB驱动器:

void principal::datahora() {
    dhActual->setText(QDateTime::currentDateTime().toString("dd/MM/yyyy hh:mm:ss"));
    static bool usb = false;
    connectat = false;
    foreach (const QStorageInfo &drive, QStorageInfo::mountedVolumes()) {
        if (drive.name() == unitatUSB)
        {
            connectat = true;
            break;
        }
    }
    if (connectat ^ usb) { // Have there been change?
        usb = connectat;
        if (connectat)
        {
            emit(estatUsb(true));
            // more stuff
        }
    }       
}

此例程根据QTimer触发的信号每秒运行一次,并显示状态栏上的时间(dhactual是QLabel,unitatUSB是QString,USB标签预期)。 信号estatUSB已连接到开放QMainWindowQDialog s上的相应位置,这会对此采取适当的操作。

当我在我的一个客户的功能完整的应用程序中构建此例程时,GUI突然挂起,状态栏的时钟每5秒更新一次,使应用程序无用。这是唯一的改变。

目标机器运行Win 7 32位,我已经探讨了几个可能的原因,例如:

  • 由LG GH22NS50固件(DVD驱动器)创建的标有' Bluebirds'的假驱动器。当物理拔掉插头时,所有内容都保持不变。
  • 读卡器。我已经禁用,没有任何变化。
  • 在安全模式下,同样的事情发生。

毫无疑问,安装Qt IDE并在调试模式下运行应用程序我可以得到一些关于会发生什么的信息,但这对我来说是最后的选择(目标机器正在生产中,测试的时间窗口很窄)

那么,你们中的一些人可以建议接下来要采取的步骤,或指出一些可能的解决方案吗?

提前致谢,

编辑以澄清:

我向应用程序添加了一个单独的函数,在其他计算机(和我的)上的调试和发布模式下工作正常。在该计算机中,每当函数迭代安装的卷时,GUI都会挂起5秒钟,无论是否连接了USB驱动器。

0 个答案:

没有答案