Russian Qt Forum
Ноябрь 23, 2024, 14:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Запуск одной копии программы + Показ первой копии  (Прочитано 16866 раз)
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #15 : Август 31, 2012, 01:02 »

minGW тут не при чём, ребут не нужен. чтоб наверняка: помести QTDIR\bin самым первым в PATH
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #16 : Август 31, 2012, 01:18 »

Решение было, блин, простым...
забыл что при установке выбрал 2 версии qt 4.8.0 и 4.8.1, и нужно было только выбрать сборку 4.8.0 для qtsingleapplication Улыбающийся

Но есть еще вопросы, в программе использую QApplication:: и иногда qApp,
1 теперь места с QApplication:: нужно заменить на QtSingleApplication::?
2 а макрос qApp тоже самое что QApplication?
3 qApp можно заменить на QtSingleApplication?
4 QtSingleApplication требует дополнительную dll?
5 есть ли какие то серьезные или не очень баги с QtSingleApplication?
6 QtSingleApplication - бесплатная либа?
Записан

kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #17 : Август 31, 2012, 01:29 »

1. нет
2. это макрос для QApplication::instance()
3. зачем?
4. нет
5. вроде нет
6. да
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #18 : Август 31, 2012, 01:36 »

Странно...у меня иногда с QtSingleApplication открывается новые копии
при постоянном запускании ехе (раз 10 открывал), это нормально?
« Последнее редактирование: Август 31, 2012, 02:09 от gil9red » Записан

gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #19 : Август 31, 2012, 01:39 »

main таков:
Код:
#include <QtGui/QApplication>
#include "ManagerNote.h"
#include "qtsingleapplication/qtsingleapplication.h"

int main(int argc, char *argv[])
{
    QtSingleApplication instance(argc, argv);
    if (instance.sendMessage("Wake up!"))
        if(instance.isRunning())
            return 0;

    QPixmap *pixmap = new QPixmap(":/images/splash.png");

    pixmap->scaledToWidth(200, Qt::SmoothTransformation);

    QSplashScreen *splash = new QSplashScreen(*pixmap);
    splash->show();

//    instance.processEvents();

    splash->showMessage("initialization...", Qt::AlignRight);

    ManagerNote *managerNote = new ManagerNote();   

    instance.setActivationWindow(managerNote);

    splash->finish(managerNote);

    delete pixmap;
    delete splash;

    instance.setQuitOnLastWindowClosed(false);

    QObject::connect(&instance, SIGNAL(messageReceived(QString)),
                     managerNote, SLOT(messageToApp(QString)));

    return instance.exec();
}

может я что то в main напутал?
Записан

Serr500
Гость
« Ответ #20 : Август 31, 2012, 09:24 »

Может, надо наоборот?
Код:
QtSingleApplication instance(argc, argv);
if (instance.isRunning()) {
    instance.sendMessage("Wake up!");
    return 0;
}
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #21 : Август 31, 2012, 10:19 »

Тьфу, точно Веселый
Записан

kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #22 : Август 31, 2012, 10:56 »

вообще-то sendMessage() возвращает тру если сообщение доставлено существующей копии и фолс в ином случае, так что isRunning() можно и не вызывать
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #23 : Август 31, 2012, 11:29 »

но и от такой проверки хуже не станет) и нагляднее выглядит:
Код:
if (instance.isRunning()) // если копия уже запущена, тогда...
{       
    instance.sendMessage("Wake up!"); // отсылаем ей сообщение
    return 0; // закрываемся
}
Записан

Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.043 секунд. Запросов: 23.