Qt Mac(删除编辑菜单中的“特殊字符...”操作

2024-02-28

我正在 Qt 中开发一个应用程序,它经常重建其菜单。然而,当我们调用clear(),并在菜单中重新添加我们想要的操作时,“特殊字符...”似乎保留在菜单中。有什么方法可以删除或将此操作移动到 QMenu 的底部吗?

这是重建菜单的代码:

void MainWindow::initMenus(Tab* tab)
{
menuBar()->clear();
menuFile->clear();
menuEdit->clear();
menuSettings->clear();
menuHelp->clear();
ui_toolBar->clear();

menuBar()->addMenu(menuFile);
menuBar()->addMenu(menuEdit);

menuFile->addAction(actionNew);
menuFile->addAction(actionOpen);
if(tab) tab->addActionsFile(menuFile);
menuFile->addSeparator();
menuFile->addAction(actionNext);
menuFile->addAction(actionPrevious);
menuFile->addAction(actionClose);
menuFile->addSeparator();
menuFile->addAction(actionQuit);

if(tab) {
    tab->addActionsEdit(menuEdit);
    menuEdit->addSeparator();
    tab->addActionsHelp(menuHelp);
    menuHelp->addSeparator();
}

menuEdit->addAction(actionEditor_Settings);

menuHelp->addSeparator();
menuHelp->addAction(actionAbout);

if(tab) tab->addOtherActions(menuBar());

menuBar()->addMenu(menuHelp);

ui_toolBar->addAction(actionNew);
ui_toolBar->addAction(actionOpen);
if(tab) tab->addToolbarActions(ui_toolBar);
}

它提供了一个选项卡,可以将自己的操作添加到菜单以及使用这些功能。


这是 Mac OS X 的一项不容易禁用的功能。您会注意到 Mac 操作系统上几乎每个应用程序都有它。它由操作系统自动添加到编辑菜单中,以允许输入国际字符。

从您的问题看来,但不太清楚,当您最初创建“编辑”菜单时,“特殊字符...”菜单项最初是最后一个菜单项,但一旦成为第一个菜单项editMenu->clear()已被调用。你可以走的一条路线是clear()通过菜单,您可以delete菜单并完全重新创建它们。不过,您的编辑菜单看起来相当静态。也许根本不需要重新创建。

现在,也就是说,如果您确实确定需要删除此菜单项,有几种方法可以实现这一点。

第一个也是最不理想的一个是根本没有“编辑”菜单。如果没有标题为“编辑”的菜单,Mac OS 将不会添加“特殊字符”菜单项。

第二种方法需要一些特定于平台的 Objective-C 代码。显然,这只能内置到 Mac OS 上的项目中。

菜单删除器.m:

#include <Foundation/NSUserDefaults.h>

void deleteSpecialCharacters()
{
    [[NSUserDefaults standardUserDefaults]
        setBool:YES forKey:@"NSDisabledCharacterPaletteMenuItem"];
}

菜单删除器.h

#ifndef MENUDELETER_H_
#define MENUDELETER_H_

void deleteSpecialCharacters();

#endif

最后,在 main.cpp 中:

#include <QApplicaiton>
#include "MenuDeleter.h"

int main(int argc, char **argv)
{
#ifdef Q_OS_MAC
    deleteSpecialCharacters();
#endif
    QApplication app(argc, argv);
    ....
    return app.exec();
}

这就是让它完全消失的方法。但问题是,您真的想阻止用户在您的应用程序中输入特殊字符吗?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt Mac(删除编辑菜单中的“特殊字符...”操作 的相关文章

  • CIImage内存未释放

    我正在尝试拍摄一系列图像 混合当时的 X 图像并生成新图像 这是我必须完成此任务的代码 static func blendImages blendFrames Int blendMode CIImage BlendMode imagePat
  • Python中的MariaDB连接器无法连接到远程服务器

    我使用与远程 Mariadb 服务器的连接已有几个月了 今天 无法再通过 macOS 上的 python mariadb 模块和 mariadb 连接器建立连接 基本安装如下 brew install mariadb connector c
  • Qt 编译器标志顺序

    我的目标是消除某些类型的编译器警告 我发现可以通过在 pro 文件中添加编译器标志来做到这一点 QMAKE CXXFLAGS Wno unused variable Wno reorder 问题是它们被添加在 Qt 构建系统生成的标志之前
  • QPainterPath::arcTo 上的角度如何解释?

    我正在开发图形编辑器的功能 在其中编辑弧线 当形状是椭圆形时 QPainterPath arcTo 的行为并不像我预期的那样 当它是一个圆圈时 它会按预期工作 下面的两张图片显示了结果 在第一种情况下 我创建了一个圆 然后将其转换为初始起始
  • 在 OSX 上,Java 线程在不关注时会进入睡眠状态

    我正在编写一个程序来监听系统剪贴板的更改 侦听器在单独的线程上运行 并在剪贴板的内容更改时执行某些操作 例如写入文件 我正在使用轮询剪贴板剪贴板所有者界面 http www javapractices com topic TopicActi
  • 如何在全屏视图前面显示 NSPanel?

    我的应用程序以全屏方式运行 我需要类似 iOS 的 UIPopoverController 之类的东西 第一个想法是使用 NSPanel 但我无法让它显示在全屏视图前 我需要一个类似 UIPopoverController 的 Cocoa
  • 从 Qt 更改屏幕分辨率?

    我想更改屏幕分辨率 然后使用一个 ActiveX 控件 Flash 播放器 进入全屏 显然 仅适用于 Windows 的解决方案就可以了 有 Qt api 吗 还是我需要深入研究 winapi 如果是这样 我该在哪里查找 关键字 谢谢您的帮
  • 如何在不同的QT线程中创建一个窗口?

    我有一个应用程序 其中每个线程 主线程除外 都需要创建自己的窗口 我尝试创建一个线程然后调用this gt exec in the run功能 然而 在我接到那个电话之前我就收到了一个错误 ASSERT failure in QWidget
  • 在Qt中,如何正确实现委托?

    我遵循模型 视图 控制器范例 我很确定模型和视图是正确的 但我认为我的代表做错了一些事情 一切都 有效 除了第一次单击控件只是 点亮控件 而第二次单击与之交互之外 这是代表通常的实施方式吗 我的实现需要大量的构造和销毁 由scoped pt
  • 如何在Qt3D中优化点云渲染

    我正在尝试使用 Qt3D 显示大型点云 20M pts 我第一次发现这个图书馆https github com MASKOR Qt3DPointcloudRenderer https github com MASKOR Qt3DPointc
  • 在 Xcode 9 上切换分支

    我无法找到使用 Xcode 9 切换分支的菜单项 工作副本菜单似乎已经消失 有任何想法吗 Xcode 9 Xcode 8 Press 2 to open the new Source Control Navigator 右键单击master
  • QT C++ QRegularExpression 多个匹配

    我想使用正则表达式从 QString html 中提取信息 我明确想使用正则表达式 无解析器解决方案 和类Q正则表达式 http qt project org doc qt 5 0 qtcore qregularexpression htm
  • 如何将 Firebug 停靠在浏览器窗口中?

    在新窗口中打开后如何将 Firebug 停靠在浏览器窗口中 对于 Mac OS X 10 5 上的 Firefox 3 0 8 和 Firebug 1 3 我无法将其停靠在浏览器窗口中 如何解决问题 背景 火狐浏览器10 0 10 脚步 如
  • Captive Wifi 弹出窗口:单击链接打开 Safari

    我们的 iOS 设备 ipad iphone 等 网络出现问题 连接到 SSID 后 iphone ipad 立即打开强制网络助手 CNA 它就像一个缩小版的浏览器 没有导航按钮等 显示我们的欢迎页面 准备好让用户在网络中验证他的 MAC
  • 左右 mac“命令”键的配置不同吗?

    我想知道是否可以将右侧的 mac 命令 设置为像 ctrl 键一样 但保留左侧 命令 键的默认功能 谢谢 有一个非常棒的应用程序 称为 Ukelele 免费 不幸的是 它无法区分左右命令键 然而 我最近发现了一个更好的应用程序 名为 Con
  • Java:如何检测(并更改?)System.console 的编码?

    我有一个在控制台上运行的程序 其变音符号和其他特殊字符在 Mac 上以 的形式输出 这是一个简单的测试程序 public static void main String args System out println h h System
  • 在 QtCreator 中调试时如何查看 qDebug 消息

    我正在从 Eclipse CDT 带有 Qt 集成插件 过渡到 QtCreator 2 0 但仍有一件事困扰着我 QtCreator 当我在 QtCreator 中调试时 我在Application output tab直到我停止正在调试的
  • 在另一个中使用 QAbstractListModel

    我在尝试使用 Qt QML 为我的应用程序开发数据模型时遇到问题 我已经用过一个QAbstractListModel能够将海关数据模型从 C 传递到 QML 并且它对于简单模型 例如基于字符串和布尔的模型 来说就像一个魅力 但现在我需要建立
  • 构建qt程序时未定义的符号:找不到qt_version_tag

    我正在学习Qt5 6 我正在使用 Ubuntu 14 4 当我链接我的程序时 出现以下错误 undefined reference to qt version tag 在 CMakeLists txt 中 link libraries Qt
  • Qt 和 MOC 的困境与简单的制作

    我想这更像是一个 GNU Make 问题 而不是 Qt 和 moc 但这里是 我有一个包含多个目录Q OBJECTS 我有一些简单的代码 它收集所有这些 例如 MOCS shell grep l Q OBJECT HEADERS Assum

随机推荐

  • Swift:仅返回类型不同的方法重载

    我不断看到 Swift 类中定义了两种仅返回类型不同的方法 我不习惯使用允许这样做的语言 Java C 等 因此我寻找描述其在 Swift 中如何工作的文档 我在任何地方都没有发现任何东西 我本以为 Swift 书中会有完整的章节来介绍它
  • WPF - 当 ItemsSource 更改时重置 ListBox 滚动位置

    我当前有一个 ListBox 其 ItemsSource 集合绑定到我的视图模型上的 IEnumerable 类型的属性 当该 preoprty 的引用更改时 列表框会按预期更新 但是我有一个问题 如果我有大量项目集合并滚动到列表框的底部
  • 禁用 Laravel 中的速率限制器?

    有没有办法禁用 Laravel 中每个 单个路由的速率限制 我正在尝试测试接收大量请求的端点 但 Laravel 会随机开始响应 status 429 responseText Too Many Attempts 数百个请求使得测试变得非常
  • KeyVault 为何比标准存储更安全?

    我试图了解 Azure Key Vault 或同样的 AWS KMS 提供的安全优势 我了解密钥管理的好处 即能够轻松轮换 更改 审核密钥访问 但让我有点困惑的是它如何更安全 据我了解 如果我开发一个 Web 应用程序并想要保护我的连接字符
  • 使用 cakephp 3 上传文件并将其存储在 blob 中

    我知道在数据库中存储文件有点脏 但我需要上传文件并将其存储到数据库 BLOB 中 并且我没有找到任何有关它的文档 也没有找到任何线索 所以有关的任何帮助我们将不胜感激 提前致谢 大卫 您不需要做任何特别的事情 只需将要存储在适当的实体属性
  • 在 $_POST 值中不使用引号、单引号和双引号[重复]

    这个问题在这里已经有答案了 可能的重复 我应该对单引号使用 php 引号转义还是在数组中使用双引号 https stackoverflow com questions 2317959 should i use php quote escap
  • 要上传到 Google 云端硬盘的 URL

    有没有可以用来直接上传到 Google 云端硬盘的 URL 例如 我的服务器上有一个文件http example com file doc我想将其上传到 Google Drive 如下所示 http google com upload ht
  • 检查是否有元素包含特定的 css 样式

    我想知道元素包含任何 css 样式的检查过程 我有以下 html 代码 ul li text 1 li li text 2 li li text 3 li ul 我想找出样式左侧为 0px 的 li 然后想对该 li 应用更多样式 Than
  • Subsonic - 如何使用 SQL 架构/所有者名称作为命名空间的一部分?

    我刚刚开始使用 Subsonic 2 2 到目前为止印象深刻 认为它会节省我一些认真的编码时间 在我开始全职使用它之前 尽管有些事情困扰着我 我想解决一下 在我当前的数据库 SQL2008 数据库 中 我已按架构 所有者名称将表 视图 sp
  • 是否可以通过插件在 Firefox 上设置配置设置

    我正在寻找一种从网络打印而不提示打印对话框的方法 我刚刚提出了问题 https stackoverflow com questions 5809102 how to print from web without prompting a pr
  • 如何进行函数复合?

    在相当不耐烦地等待 Java 8 发布并阅读精彩文章之后Brian Goetz 的 Lambda 状态 文章 http cr openjdk java net briangoetz lambda lambda state final htm
  • 操作必须使用可更新查询/SQL - VBA

    我正在尝试创建一个非常动态的宏 它将根据用户的选择更新数据库中的不同表 当然 每个表都有不同的标题和信息 我在更新时遇到问题 当用户将新记录添加到旧表时 这是代码的一部分 问题是当它到达 update 时 我收到 操作必须使用可更新查询 错
  • Hibernate:为什么 FetchType.LAZY 注释的集合属性急切加载?

    我尝试实现简单的one to many协会 使用调试模式检查项目对象后 我发现List
  • scrapy中如何根据url过滤重复请求

    我正在使用 scrapy 和 CrawlSpider 为网站编写一个爬虫 Scrapy 提供了一个内置的重复请求过滤器 可以根据 url 过滤重复请求 另外 我可以使用过滤请求rules爬行蜘蛛成员 我想做的是过滤请求 例如 http ww
  • matplotlib:子图背景(轴面+标签)颜色[或图/轴坐标系]

    我有一个包含 3x2 子图的图形 我想在中间一对子图上设置背景颜色 以便更清楚哪些轴标签属于哪个子图 Setting facecolor构建子图时 仅更改轴定义的区域的颜色 刻度线和轴标签仍然绘制在figure patch 假设没有简单的方
  • ionic 使用获取上一页名称

    我用的是离子2 我需要获取上一页的名称 这是我的代码 ViewChild Nav nav Nav constructor this nav app viewDidEnter subscribe view gt console log Cur
  • 在 Openlayers 中单击地图外部时如何激活功能 + 弹出窗口?

    我正在重新解析已加载到地图上的 KML 类似于此处的示例 http openlayers org dev examples sundials html http openlayers org dev examples sundials ht
  • 适用于 SQL Server 的 Microsoft OLE DB 提供程序是否支持 TLS 1.2

    我们的客户端最近从 TLS 1 0 升级到 TLS 1 2 此后我们的软件无法与 SQL Server 连接 它使用 OLE DB 提供程序连接到 SQL 服务器 以下是从 SQL 服务器返回的错误 DBNETLIB ConnectionO
  • 有什么方法可以在不更改格式的情况下比较 Git 中的两个文件吗?

    我已经提交了一些具有某种格式的代码 但源有一些其他格式 审阅者要求我恢复所有更改 我正在寻找一些 UI 工具或 Git 中的某种方式来删除格式并给出实际结果 我想你可能会看看 git diff 特别是以下两个选项 b ignore spac
  • Qt Mac(删除编辑菜单中的“特殊字符...”操作

    我正在 Qt 中开发一个应用程序 它经常重建其菜单 然而 当我们调用clear 并在菜单中重新添加我们想要的操作时 特殊字符 似乎保留在菜单中 有什么方法可以删除或将此操作移动到 QMenu 的底部吗 这是重建菜单的代码 void Main