QMenuBar仅包含OS X上的非活动菜单项

时间:2014-07-19 18:10:06

标签: c++ macos qt osx-mavericks qmenubar

出于某种原因,当我在OS X Mavericks上使用本机菜单栏时,我的所有菜单栏项都显示为灰色:

menu bar

我使用以下代码创建菜单操作:

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

有任何想法/建议吗?

2 个答案:

答案 0 :(得分:0)

我怀疑这条线是你的罪魁祸首:

addAction(newAct);

您不应该将QActions添加到窗口,因为您将把它们添加到fileMenu对象中。尝试删除上面的行。

答案 1 :(得分:0)

我遇到了同样的问题。

将我的MainWindow的windowModality属性设置为NonModal对我有效。