2014-02-13 2 views
2

CMake (MOC없이)를 사용하여 Qt 5.2.1을 사용하여 Mac OS X 10.9에서 간단한 C++ 응용 프로그램을 구축하고 있습니다.Qt 메뉴 모음이 보이지 않습니다.

저는 명령 줄에서 실행 파일을 시작하고 있습니다. 문제는 메뉴 막대가 전혀 나타나지 않고 터미널 메뉴 막대가 계속 표시되지만 클릭 할 수 없다는 것입니다. 일시적으로 창을 전환 한 다음이 응용 프로그램의 창으로 돌아 오면 적어도 "정보"가있는 표준 "응용 프로그램"메뉴가 표시됩니다. 이제 '정보'작업이 작동하고 대화 상자가 표시됩니다. 도구 모음 단추는 예상대로 작동합니다.

나는 노력 (그리고 작동하지 않았다) 그 밖의 무엇 :

  • 미리 정의 된 menuBar()
  • 사용 전 확인 setMenuBar()
  • new menuBar(0)
  • menubar->setVisible(true)

를 사용하여 isVisible() 그것은 내가 visible i로 설정하면 false를 반환합니다. n 전에 줄.

MOC를 사용하지 않는 이유가이 때문인지 궁금합니다.

아래에는 축소 된 예가 첨부되어 있습니다.

#include <QtGui> 
#include <QtWidgets> 


class MainWindow : public QMainWindow { 

public: 

    MainWindow(); 


private: 

    void create_actions_(); 
    void create_menus_(); 
    void create_toolbar_(); 

    void about_(); 

    QMenuBar* menu_bar_; 
    QMenu* file_menu_; 
    QMenu* help_menu_; 

    QToolBar* file_toolbar_; 

    QAction* action_about_; 

}; 



MainWindow::MainWindow() { 
    resize(800, 600); 

    create_actions_(); 
    create_menus_(); 
    create_toolbar_(); 
} 


void MainWindow::create_actions_() { 
    action_about_ = new QAction(tr("About"), this); 
    connect(action_about_, &QAction::triggered, this, &MainWindow::about_); 
} 


void MainWindow::create_menus_() { 

    menu_bar_ = new QMenuBar(this); 

    file_menu_ = menu_bar_->addMenu(tr("&File")); 

    menu_bar_->addSeparator(); 

    help_menu_ = menu_bar_->addMenu(tr("&Help")); 
    help_menu_->addAction(action_about_); 

    menu_bar_->setNativeMenuBar(true); 
} 


void MainWindow::create_toolbar_() { 

    file_toolbar_ = addToolBar(tr("File")); 
    file_toolbar_->addAction(action_about_); 

    file_toolbar_->setIconSize(QSize(16, 16)); 

} 


void MainWindow::about_() { 
    QMessageBox::about(this, tr("About"), tr("FooBar")); 
} 


int main(int argc, char **argv) { 

    QApplication app(argc, argv); 

    MainWindow main_window; 
    main_window.show(); 

    const int exit_code = app.exec(); 
    return exit_code; 
} 

CMakeLists.txt

FIND_PACKAGE(Qt5Core) 
FIND_PACKAGE(Qt5Gui) 
FIND_PACKAGE(Qt5OpenGL) 
FIND_PACKAGE(Qt5Widgets) 
FIND_PACKAGE(Qt5Declarative) 
FIND_PACKAGE(Qt5MacExtras) 

ADD_EXECUTABLE(main main.cc) 
qt5_use_modules(main Core Gui Widgets Declarative MacExtras) 

미리 감사!

+0

당신은 moc을 가장 확실히 사용하고 있습니다. qmake를 사용하지 않고 있습니다. Moc는 "Q_OBJECT"매크로가 들어있는 각 파일에서 항상 호출되는 코드 생성기입니다. Cmake가 moc를 호출합니다. –

+0

MOC를 사용하고 있지 않습니다. 따라서 Q_OBJECT 및 신호/슬롯 기능도 사용하지 않습니다. – user2970139

답변

2

좋아요, 직접 문제를 해결하십시오. 메뉴 모음에 구분 기호를 추가 할 수없는 것으로 보입니다.

menu_bar_->addSeparator();을 제거하면 문제가 해결됩니다.

관련 문제