2010-07-25 5 views
0

Qt를 사용하여 스크린 샷을 찍고 있습니다 (스크린 인쇄).GUI를 표시하지 않고 백그라운드에서 응용 프로그램을 시작할 수 있습니까?

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

나는 즉, 백그라운드에서 시작하는 응용 프로그램을 싶습니다가 시작 (또는 콘솔 모드에서 실행) 때 나는 그것이 숨길 수 싶습니다.
Qt에서 어떻게 할 수 있습니까?

+0

"GUI를 사용하지 않고"는 무엇을 의미합니까? GUI 라이브러리를 포함하고 싶지 않습니까? 창을 보이지 않습니까? 응용 프로그램을 작업 표시 줄에 숨기시겠습니까? – strager

+0

표시 할 창을 표시하지 마십시오. 이제 애플리케이션을 실행할 때마다이 창이 표시됩니다. 난 당신이 할 수있는, – user63898

답변

5

나는 당신의 문제를 제대로 이해한다고 생각합니다.
(내가 아는 한 :
) 앱을 실행하면 위젯이 표시되지 않고 백그라운드에서 실행되는 앱이 필요합니다.

이 작업을 수행하려면 응용 프로그램이 실행될 때 시스템 트레이에 아이콘이 나타나고 대화 상자/양식/창이 화면에 표시되지 않는 시스템 트레이 접근 방식을 사용해보십시오. 앱을 실행하면 지금 당신은 다음과 같은 코드를 사용할 수 있습니다

[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(); 
} 

은 물론 설정하는 다른 많은 것들이 있고, 그들을 위해 내가 당신을 조언 것 System Tray Icon Example을 참조하십시오. 가장 중요한 점은이 방법을 따르면 앱이 실행되지만 화면에 아무 것도 표시되지 않는다는 것입니다. 이 후

앱을 호출 할 수있는 방법을 찾고 있다면 - 다음 앱을 제공하기에 더 깊이 볼 수있는 글로벌 지름길 QxtQxtGlobalShortcut 클래스를 사용하여 달성 할 수을.

나는이 문제를 올바르게 이해하고 적절한 해결책을 제공했으면 좋겠다.
내가 올바른 방향으로 가고 있는지 아닌지에 대해 의견을주십시오.

0

Qt 콘솔 응용 프로그램으로 시작할 수 있습니다.

헤더에 <GtGui>을 포함해야합니다.

, 당신의 .PRO 파일을 엽니 다 내가 대신의 QApplication의 QCoreApplication를 사용하는 것이 좋습니다 -= gui

+0

내 프로 파일 당신이 창문을보고 싶지 않아 그렇지 않은 경우 – user63898

+0

은 다음 을 'QT + = GUI'를 추가 할 수 있습니다이 CONFIG + = QT 콘솔 QT + = 코어 네트워크처럼 보인다 원하는 해달라고 'hide()'그것 – shader

+0

mybe 때문에 내 응용 프로그램에 내재 된 public QWidget 하지만 Qt funtions를 사용하기 위해 어딘가에서 내재해야합니다. hide()는 올바른 방법입니다 .. 그 나던 것은 보이지 않습니다. .. 내 느낌이 딱 맞습니다. – user63898

1

으로 라인 제거 :

그런데
// main.cpp 
#include <QCoreApplication> 

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

, 당신이 QtCreator에서 콘솔 응용 프로그램을 선택할 수 있습니다,하지만 난 항상 빈 프로젝트를 사용하십시오.

관련 문제