我制作了一个程序,将在设置的时间后关闭PC。
用户使用2个旋转框输入时间(一个为小时,另一个为分钟),
然后我将其转换为毫秒:

ms = (ui->hBox->text().toInt() * 3600 + ui->mBox->text().toInt() * 60) * 1000;


然后调用timer()函数

void Dialog::timer()
{
    QTimer *time = new QTimer(this);
    time->setInterval(ms);
    time->setSingleShot(1);
    connect(time, SIGNAL(timeout()), this, SLOT(shutdown()));
    time->start();
}


然后信号timeout()调用shutdown()插槽/函数,以检查用户是否要关闭,重新启动或注销PC,然后执行适当的命令。

void Dialog::shutdown()
{
    if(ui->radioButton->isChecked())
        system("shutdown -s -t 0");
    else if(ui->radioButton_2->isChecked())
        system("shutdown -r -t 0");
    else if(ui->radioButton_3->isChecked())
        system("shutdown -l -t 0");
}


(也尝试过“ shutdown -s -f”,甚至只有“ shutdown -s”,似乎也无济于事)

我只想在Windows PC上运行此应用程序,因此使用system()也不是问题。

当我从Qt Creator运行它时,上面的应用程序执行完美,但是当我部署它,放置所有需要的.dll文件时,程序等待计时器,然后打开空控制台,然后启动程序的新实例,PC永远不会关闭或重新启动。
那我在做什么错?我是否缺少某些.dll文件或其他内容?

最佳答案

一个简单的修复方法是将已部署的exe重命名为:shutdown.exe或其他任何名称(而不是shutdown.exe),然后系统将执行它的shutdown命令,而不是再次执行您的应用程序。

LE:可能还有其他方法可以解决这个问题,但是我还没有对此进行调查...所以也要密切注意其他解决方案;)

关于c++ - Qt shutdown()在已部署的应用程序上不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16417826/

10-11 03:01