QMenuBar содержит только неактивные пункты меню в OS X

0

По какой-то причине все элементы меню отображаются серым цветом, когда я использую собственную панель меню в OS X Mavericks:

Изображение 174551

Я создаю действия меню, используя следующий код:

newAct = new QAction(tr("&New"), this);
newAct->setShortcuts(QKeySequence::New);
newAct->setStatusTip(tr("New"));
newAct->setShortcutContext(Qt::ApplicationShortcut);
newAct->setEnabled(true);
newAct->setAutoRepeat(false);
addAction(newAct);
connect(newAct, SIGNAL(triggered()), this, SLOT(newFile()));
...

Эти действия затем добавляются в строку меню следующим образом:

// _menuBar = new QMenuBar(0);
_menuBar = menuBar();
//_menuBar->setNativeMenuBar(false);

fileMenu = _menuBar->addMenu(tr("&File"));
fileMenu->addAction(newAct);

Разоблачение первой строки показывает одно и то же поведение. Однако он работает нормально, когда я использую нестандартную панель меню.

Версия Qt:

$ /usr/local/qt/5.3/clang_64/bin/qmake -v    
QMake version 3.0
Using Qt version 5.3.1 in /usr/local/qt/5.3/clang_64/lib

Любые идеи/предложения?

  • 0
    Привет, вы смогли определить причину этой проблемы? Я также сталкивался с этим в Qt 5.5. С Qt 4.8.6 все работает нормально, но с Qt 5.5 все пункты меню неактивны.
Теги:
macos
qt
osx-mavericks
qmenubar

2 ответа

0

У меня такая же проблема.

Настройка свойства windowModality моего MainWindow для NonModal работала для меня.

0

Я подозреваю, что эта линия - ваш виновник:

addAction(newAct);

Вы не должны добавлять QActions в свое окно, так как вместо этого вы будете добавлять их к объекту fileMenu. Попробуйте удалить указанную выше строку.

  • 0
    Спасибо за Ваш ответ! Я только что попытался удалить строку addAction (), но меню выглядело так же. Я добавляю их, чтобы ярлыки работали, как бы вы поступили, если не добавили бы это в окно в противном случае? Добавить другое действие с той же настройкой? Во всяком случае, это, к сожалению, не решило мою проблему.
  • 0
    Хм. Можете ли вы опубликовать небольшую, самодостаточную, компилируемую программу-пример, которая воспроизводит ошибку?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню