【问题标题】:Disable "Start Dictation" for an app in Qt在 Qt 中禁用应用程序的“开始听写”
【发布时间】:2017-04-05 01:07:32
【问题描述】:

有没有办法为 mac 应用程序禁用“开始听写”?基本上,我在“编辑”菜单栏中反复获得“开始听写...”菜单。任何解决方法都会有所帮助。

【问题讨论】:

  • 听起来像 apple bug 在 Mountain Lion 的 build 12A248 中修复,除了间接使用 NSMenu 之外,可能与 Qt 无关
  • 我在小牛队,我遇到了同样的问题,但没有解决。

标签: qt qt4


【解决方案1】:

更改 QMenu 的 title 属性将阻止 OS X 自动将愚蠢的东西添加到 Edit 菜单中。

如果我有一个 QMenuBar 并且我正在向它添加菜单..

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

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

【讨论】:

    【解决方案2】:

    您需要重命名您的菜单以阻止 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
    

    【讨论】:

      猜你喜欢
      • 2011-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-28
      • 2013-07-04
      • 2016-02-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多