gpt4 book ai didi

Qt Mac (Re)move "Special Characters..."编辑菜单中的操作

转载 作者:行者123 更新时间:2023-12-04 12:49:19 25 4
gpt4 key购买 nike

我正在 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);
}

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

Special Characters Option in Edit Menu

最佳答案

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

从您的问题看来,但不太清楚,当您最初创建“编辑”菜单时,“特殊字符...”菜单项最初是最后一个菜单项,但一旦成为第一个菜单项 editMenu->clear()已被调用。您可以选择的一种方法是代替 clear()在菜单中,您可以 delete菜单并完全重新创建它们。不过,您的编辑菜单看起来非常静态。也许它根本不需要重新创建。

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

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

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

MenuDeleter.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();
}

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

关于Qt Mac (Re)move "Special Characters..."编辑菜单中的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6391053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com