在Qt中禁用应用程序的“开始听写”

时间:2013-03-15 14:16:18

标签: qt qt4

有没有办法为mac应用程序禁用“Start Dictation”?基本上,我反复在“编辑”菜单栏中显示“开始听写...”菜单。任何工作都会有所帮助。

2 个答案:

答案 0 :(得分:1)

更改QMenu的title属性将阻止OS X自动将愚蠢的内容添加到“编辑”菜单中。

所以,如果我有一个QMenuBar,我正在为它添加菜单..

m_edit = this->addMenu(tr(" Edit"));

注意我在文本前放了一个空格。

答案 1 :(得分:0)

您需要重命名菜单以阻止macOS弄乱它们。在菜单项前添加一个空格有效,但它有点难看。这是使用零宽度字符执行此操作的更高级的方法:

menu->setTitle( menu->title().prepend( QString::fromUtf8( "\u200C" )  ) );

您可以在QMainWindow派生类(在Qt 4.7上测试)中为所有顶级应用程序菜单执行此操作:

#ifdef Q_OS_MACX
foreach ( QMenu* menu, menuBar()->findChildren<QMenu*>() )
{
    menu->setTitle( menu->title().prepend( QString::fromUtf8( "\u200C" )  ) );
}
#endif