2010-04-28 5 views
0

QT 4.6을 사용하여 간단한 GUI를 만들려고합니다. ..간단한 도구 모음 Qt4 사용

는 MenuBar 클래스에서 볼 수 없기 때문에

MenuBar::MenuBar() 
{ 
    aboutAct = new QAction(tr("&About QT"), this); 
    aboutAct->setStatusTip(tr("Show the application's About box")); 
    connect(aboutAct, SIGNAL(triggered()), this, SLOT(about())); 

    quitAct = new QAction(tr("&Quit"),this); 
    quitAct->setStatusTip(tr("Exit to the program")); 
    //connect(quitAct, SIGNAL(triggered()), &QApp, SLOT(quit())); 

    menuFile = new QMenu("File"); 
    menuFile->addAction(quitAct); 

    menuLinks = new QMenu("Links"); 

    menuAbout = new QMenu("Info"); 
    menuAbout->addAction(aboutAct); 


    addMenu(menuFile); 
    addMenu(menuLinks); 
    addMenu(menuAbout); 
} 

는 아마 메인 프로그램의 종료 슬롯에 quitAct의 신호를 연결할 수 난 메뉴 막대를 나타내는의 separete 클래스했다

//connect(quitAct, SIGNAL(triggered()), &QApp, SLOT(quit())); 

어떻게 할 수 있습니까?

답변

3

오타가 있습니다. :)에서

: connect(quitAct, SIGNAL(triggered()), &QApp, SLOT(quit()));

변수의 이름은 QAPP하지 QAPP이다. 그건 제쳐두고, balpha는 모두 그것을 말했다. 그래서 그건 다음 중 하나를

connect(quitAct, SIGNAL(triggered()), qApp, SLOT(quit()));
또는
connect(quitAct, SIGNAL(triggered()), QApplication::instance(), SLOT(quit()));

0
  1. 당신은 MenuBar 클래스에서 공개로 quitAct 변수를 만들 수 있고 다음() 함수를 종료하려면 메인 윈도우 클래스는

    연결 (menuBar-> quitAct처럼 menuBar-> quitAct 연결에서, 신호 (clicked()), this, SLOT (quit()));

  2. quitSignal()과 같이 MenuBar 클래스에서 public SIGNAL을 만들고이 신호가 발생할 때 주 창/대화 상자 클래스에서 quit() 함수에 연결할 수 있습니다.

  3. 당신은 당신의 메인 창/대화 상자 클래스의 외부 \ 롬 FO MenuBar 클래스 코드를 사용, 그냥 예를 들어, 하나의 함수에 모든 것을 넣어하지 않을 수 있습니다

    무효 createMenuBar() { ... }

행운을 빕니다.

+0

모든 방법이 너무 "더러운"하지 Qt는 스타일이다. 그리고 코드에서 오류를 발견하지 못했습니다. –

5

QApplication 클래스 또는 qApp macrostatic instance() method을 사용하여 응용 프로그램 인스턴스에 대한 포인터를 가져옵니다. 이것은 포인터이므로 &qApp이 아니라 을 connect()으로 전달하십시오.