gpt4 book ai didi

c++ - 如何重启QtSingleApplication?

转载 作者:太空狗 更新时间:2023-10-29 20:38:14 25 4
gpt4 key购买 nike

我可以重新启动我的应用程序

QProcess::startDetached(QApplication::applicationFilePath());
exit(12);

但是如果我有 QtSingleApplication 新实例将不会运行。有没有办法欺骗 QtSingleApplication 以允许它在 isRunning() 可能通过某些命令行参数或其他方面返回 true 时运行新实例?

如果我在开头添加 Sleep(5000); 就完全没问题,但它看起来不像好的设计,我想我只需要一个额外的互斥锁来检测我的应用程序不见了:S 你怎么看?

最佳答案

当您想要将您的应用程序作为新的运行实例启动时,传递一个特定的参数以指示它应该关闭任何现有的而不是通常相反的方式。

这可以处理为

//code to send to instances
if(myturn)
{
if (a.isRunning()) {
QString rep("Another instance is running, so I will ask to leave.");
bool sentok = a.sendMessage(message_gtfo,1000);

if(!sentok)
return "some error";
}
}

//code to receive message from instance
connect(&a, SIGNAL(messageReceived(const QString&)),
&this, SLOT(handlMessage(const QString &))
);
...

void instancecomhandler::handlMessage(const QString & msg)
{
if(msg == message_gtfo)
//proceed to exit
}

编辑:

您仍然需要传递参数来修改行为。当另一个实例正在运行时,默认行为退出。新行为会一直等到另一个实例终止。

关于c++ - 如何重启QtSingleApplication?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32306561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com