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)
미리 감사!
당신은 moc을 가장 확실히 사용하고 있습니다. qmake를 사용하지 않고 있습니다. Moc는 "Q_OBJECT"매크로가 들어있는 각 파일에서 항상 호출되는 코드 생성기입니다. Cmake가 moc를 호출합니다. –
MOC를 사용하고 있지 않습니다. 따라서 Q_OBJECT 및 신호/슬롯 기능도 사용하지 않습니다. – user2970139