QObject::tr无法获取翻译文本

1、QTranslator 不能是局部变量,检查installTranslator后的作用域

2、objectClassName(this) 获取的类名称为QObject,即context为QObject

QString QMetaObject::tr(const char *s, const char *c, int n) const
{
    return QCoreApplication::translate(objectClassName(this), s, c, n);
}
在 Qt 的 C++ 中,如果你想要自定义 `QTextEdit`(QTextEdit 类型的控件,如 `QTextEdit` 或 `QTextBrowser`)的右键点击菜单,并添加特定于文本选择的操作,你可以这样做: 首先,在 `QTextEdit` 上连接鼠标右键点击事件(`contextMenuEvent()`): ```cpp QTextEdit *textEdit = new QTextEdit(parent); QObject::connect(textEdit, &QTextEdit::contextMenuEvent, this, &YourClass::customContextMenuEvent); ``` 然后,创建一个槽函数 `customContextMenuEvent()` 来处理这个事件,并在其中构建自定义菜单: ```cpp void YourClass::customContextMenuEvent(QContextMenuEvent *event) { QMenu *menu = new QMenu(this); // 添加到菜单项 QAction *selectAllAction = menu->addAction(tr("Select All")); QAction *copyAction = menu->addAction(tr("Copy")); QAction *pasteAction = menu->addAction(tr("Paste")); // 根据当前选中的文本,添加更多操作(例如,搜索、替换等) QTextCursor cursor = textEdit->textCursor(); if (cursor.hasSelection()) { // 获取选中的文本 QString selectedText = cursor.selectedText(); // 自定义选项,如查找或高亮 QAction *findAction = menu->addAction(tr("Find"), [selectedText](){ textEdit->find(selectedText); }); // 其他操作... } // 执行菜单项对应的函数 menu->exec(event->globalPos()); } ``` 在这个例子中,我们添加了“全选”、“复制”和“粘贴”基本功能。如果你需要根据选中的文本进行更复杂的操作,可以在获取到选中的文本后,添加更多的菜单项和动作。 请注意,你需要替换 `YourClass` 为你的实际类名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值