Как запустить приложение в фоновом режиме, т.е. без отображения графического интерфейса? - PullRequest
0 голосов
/ 25 июля 2010

Я использую Qt для снятия скриншотов (трафаретная печать).

QPixmap::grabWindow(QApplication::desktop()->winId());

Я бы хотел, чтобы приложение запускалось в фоновом режиме, т.е. я хочу, чтобы оно было скрыто при запуске (или даже при запуске)в режиме консоли).
Как я могу это сделать в Qt?

Ответы [ 3 ]

6 голосов
/ 25 марта 2012

Мне кажется, я правильно понимаю вашу проблему.
(Насколько я понимаю:)
Вам необходимо приложение, которое при запуске не отображает виджет и работает в фоновом режиме.

Чтобы добиться этого, вы должны попытаться использовать подход «Системный трей» - при котором при запуске приложения в системном трее появляется значок, а на экране не отображается диалоговое окно / форма / окно.Теперь, когда вы запускаете приложение, вы можете использовать код, подобный следующему:

[main.cpp]

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    // this is the important bit
    app.setQuitOnLastWindowClosed(false);

    Class object;
    // do not call object.show()
    // but do remember to setup and invoke
    // system tray icon in the constructor

    return app.exec();
}

Конечно, есть много других вещей, которые нужно установить, и для них я 'Советую обратиться к Примеру иконки в системном трее .Главное, что если вы будете следовать этому подходу, ваше приложение будет работать, но на экране ничего не будет отображаться.

После этого, если вы ищете способ вызвать приложение - тогда вы можете посмотреть глубжечтобы предоставить вашему приложению глобальный ярлык , который может быть достигнут с помощью Qxt QxtGlobalShortcut class.

Я надеюсь, что у меня естьправильно понял проблему и дал правильное решение.
Пожалуйста, прокомментируйте, иду ли я в правильном направлении или нет.

1 голос
/ 25 февраля 2011

Я рекомендую вам использовать QCoreApplication вместо QApplication:

// main.cpp
#include <QCoreApplication>

int main(int argc, char* argv[])
{
QCoreApplication app(argc, argv);
// ...
return app.exec();
}

Кстати, вы можете выбрать Консольное приложение в QtCreator, но я всегда использую Пустой проект.

0 голосов
/ 25 июля 2010

Вы можете начать с Консольного приложения Qt.

Не забудьте включить <GtGui> в заголовки.

Откройте файл .PRO, удалите строку с -= gui

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...