次のコード例を使用すると、アプリケーションの起動時に、Qt 5.3.2 を使用する MacOS 10.9.5 のネイティブ メニューが表示されません。以前のメニューは引き続き表示されますが、このツールバーでアクションを実行することはできません。別のアプリケーションまたは別のデスクトップに切り替えると、このアプリケーションのメニューが表示され、期待どおりに使用できるようになります。
私の質問は次の質問とほぼ同じですが、私のコードでは答えが機能しません。
ここに別の非常によく似た質問があり、提案された回答に従ってコードを既に変更しましたが、どちらも機能しません。
シンプルな QMainWindow コード、Qt Creator Mac OS で MenuBar が表示されない
#include <QtGui>
#include <QtWidgets>
class MainWindow : public QMainWindow
{
public:
MainWindow();
private:
void create_actions_();
void create_menus_();
void about_();
void dummy_();
QMenuBar* menu_bar_;
QMenu* file_menu_;
QMenu* help_menu_;
QAction* action_about_;
QAction* action_dummy_;
};
MainWindow::MainWindow()
{
resize(800, 600);
create_actions_();
create_menus_();
}
void MainWindow::create_actions_()
{
action_about_ = new QAction(tr("About"), this);
action_dummy_ = new QAction(tr("Dummy"), this);
connect(action_about_, &QAction::triggered, this, &MainWindow::about_);
connect(action_dummy_, &QAction::triggered, this, &MainWindow::dummy_);
}
void MainWindow::create_menus_()
{
menu_bar_ = new QMenuBar(this);
file_menu_ = new QMenu(tr("&File"));
file_menu_->addAction(action_dummy_);
menu_bar_->addAction(file_menu_->menuAction());
help_menu_ = new QMenu(tr("&Help"));
help_menu_->addAction(action_about_);
menu_bar_->addAction(help_menu_->menuAction());
menu_bar_->setNativeMenuBar(true);
}
void MainWindow::about_()
{
QMessageBox::about(this, tr("About"), tr("FooBar"));
}
void MainWindow::dummy_()
{
QMessageBox::about(this, tr("Dummy"), tr("Dummy"));
}
int main(int argc, char **argv)
{
QApplication app(argc, argv);
MainWindow main_window;
main_window.show();
return app.exec();
}
もう一度同じ質問をして本当に申し訳ありませんが、初心者としてコメントすることはできません (率直に言って、これは最悪です!)。
編集: 次の CMake ファイルを使用してテスト プロジェクトをビルドしています。
cmake_minimum_required(VERSION 2.8.12)
project(testproject)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
find_package(Qt5Widgets)
add_executable(testapp main.cpp mainwindow.h mainwindow.cpp)
target_link_libraries(testapp Qt5::Widgets)