在使用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
已连接到开放QMainWindow
或QDialog
s上的相应位置,这会对此采取适当的操作。
当我在我的一个客户的功能完整的应用程序中构建此例程时,GUI突然挂起,状态栏的时钟每5秒更新一次,使应用程序无用。这是唯一的改变。
目标机器运行Win 7 32位,我已经探讨了几个可能的原因,例如:
毫无疑问,安装Qt IDE并在调试模式下运行应用程序我可以得到一些关于会发生什么的信息,但这对我来说是最后的选择(目标机器正在生产中,测试的时间窗口很窄)
那么,你们中的一些人可以建议接下来要采取的步骤,或指出一些可能的解决方案吗?
提前致谢,
我向应用程序添加了一个单独的函数,在其他计算机(和我的)上的调试和发布模式下工作正常。在该计算机中,每当函数迭代安装的卷时,GUI都会挂起5秒钟,无论是否连接了USB驱动器。