максимизация уже запущенного экземпляра приложения с одним экземпляром в qt

Я сделал приложение для запуска только одного экземпляра с использованием общей памяти в Qt.
Мой код выглядит так

int main(int argc, char *argv[])
{
QSharedMemory sharedMemory;
sharedMemory.setKey("4da7b8a28a378e7fa9004e7a95cf257f");
if(!sharedMemory.create(1))
{
return 1; // Exit already a process running
}
QApplication a(argc, argv);
Encoder *encoder = Encoder::instance();
encoder->show();
return a.exec();
}

Теперь мне нужно показать уже запущенный экземпляр пользователю (развернуть окно), когда они пытаются запустить другой экземпляр. Как мне этого добиться?

0

Решение

Существует простая настройка с помощью QtSingleApplication вместо:

QtSingleApplication app("myapp",argc, argv);

if (app.isRunning()) {
QListIterator<QString> it(messagestosend);
QString rep("Another instance is running, so I will exit.");
bool sentok = false;
while(it.hasNext()){
sentok = app.sendMessage(it.next(),1000);
if(!sentok)
break;
}
rep += sentok ? " Message sent ok." : " Message sending failed; the other instance may be frozen.";
return 0;
}

Чтобы получить это сообщение, вы должны слушать с желаемым слотом для сигнала

void QtSingleApplication::messageReceived(const QString&)
2

Другие решения


По вопросам рекламы [email protected]