QInputDialog,QTextEdit,QLineEdit,Qt右键菜单英文转中文问题

	本次做项目,公司老大让我把Qt右键显示英文的问题给搞一下,这是以前都有的问题,一直没有时间去弄,昨天晚上搞了一
会,把整个方法给大家分享一下,以免后者再浪费大量时间。
	Qt如果需要翻译,需要进行加载qm文件,所以在这里我们只需要加载Qt内自带的qt_zh_CN.qm文件就可以解决QLineEdit
右键中文问题,加载方法,(需在main主函数里面写)(qt_zh_CN.qm文件路径:C:\Qt\Qt5.5.1\5.5\msvc2013\translations)
	QTranslator translator;
	translator.load(":/languages/qt_zh_CN.qm");
	app.installTranslator(&translator);

到这里,关于QLineEdit右键翻译问题就解决了,但是并没有解决QInputDialog,QTextEdit,QPlainTextEdit的右键菜单中文问题,因为这几个类加载的是QWidgetTextControl里面的菜单,但是qt_zh_CN.qm文件并没有对这个文件进行中文翻译,所以我们需要另外一个翻译文件,来补充这一点,制作方法参照这个网页教程,他写的很详细,我也是根据他写的节省了很多时间
https://blog.csdn.net/suirosu/article/details/45313525
生成ts文件之后,再用qt自带的翻译家编译成qm文件就行了,具体造作我这边就不啰嗦了,另外,我这边会挂出已经编译好的qm文件,知道有的人没有开会员,没有币(百度云链接),需要的可以自行下载
链接: https://pan.baidu.com/s/1S9b2eoaOryn2QpJ65Jx6jQ 提取码: 7p94 复制这段内容后打开百度网盘手机App,操作更方便哦

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
### 回答1: 在 Qt 中使用菜单来显示输入框可以这样做: 1. 在你的窗口类中重新实现 `contextMenuEvent` 事件处理程序。 ``` void MainWindow::contextMenuEvent(QContextMenuEvent *event) { // 创建菜单 QMenu menu(this); // 在菜单中添加一个 QAction QAction *inputAction = menu.addAction("输入框"); // 在菜单中显示输入框 QInputDialog inputDialog; connect(inputAction, &QAction::triggered, &inputDialog, &QInputDialog::open); // 在鼠标位置显示菜单 menu.exec(event->globalPos()); } ``` 2. 在你的窗口类中添加一个槽函数来处理输入框的输入。 ``` void MainWindow::onInputDialogAccepted(const QString &text) { // 在这里处理输入框中的文本 qDebug() << "输入的文本: " << text; } ``` 3. 在创建输入框时连接槽函数。 ``` QInputDialog inputDialog; connect(&inputDialog, &QInputDialog::accepted, this, &MainWindow::onInputDialogAccepted); ``` 完整代码如下: ``` #include <QMenu> #include <QInputDialog> void MainWindow::contextMenuEvent(QContextMenuEvent *event) { QMenu menu(this); QAction *inputAction = menu.addAction("输入框"); connect(inputAction, &QAction::triggered, this, &MainWindow::showInputDialog); menu.exec(event->globalPos()); } void MainWindow::showInputDialog() { QInputDialog inputDialog; connect(&inputDialog, &QInputDialog::accepted, this, &MainWindow::onInputDialogAccepted); inputDialog.open(); } void MainWindow::onInputDialogAccepted(const QString &text) { qDebug() << "输入的文本: " << text; } ``` ### 回答2: 在QT中实现菜单点击出现输入框的方法如下: 1. 首先,在需要添加菜单的组件(例如QWidget、QLineEdit等)的构造函数中,调用setContextMenuPolicy(Qt::CustomContextMenu)函数,设置为自定义菜单。 2. 然后,重写该组件的contextMenuEvent()函数。该函数会在用户点击组件时触发。在该函数中,创建一个QMenu对象作为菜单,然后添加一个QAction对象到菜单中。 3. 为QAction对象关联一个槽函数,该槽函数会在用户点击菜单中的该项时被调用。在槽函数中,创建一个QInputDialog输入对话框,用于用户输入内容。 4. 通过调用QInputDialog的exec()函数,显示输入对话框,并获取用户输入的内容。可以使用getText()、getInt()、getItem()等函数根据需要获取不同类型的输入。 下面是一个示例代码: // mywidget.h #ifndef MYWIDGET_H #define MYWIDGET_H #include <QWidget> #include <QMenu> #include <QInputDialog> class MyWidget : public QWidget { Q_OBJECT public: MyWidget(QWidget *parent = nullptr); protected: void contextMenuEvent(QContextMenuEvent *event) override; private slots: void showInputDialog(); private: QMenu *menu; }; #endif // MYWIDGET_H // mywidget.cpp #include "mywidget.h" MyWidget::MyWidget(QWidget *parent) : QWidget(parent) { setContextMenuPolicy(Qt::CustomContextMenu); menu = new QMenu(this); QAction *inputAction = new QAction("输入框", this); connect(inputAction, &QAction::triggered, this, &MyWidget::showInputDialog); menu->addAction(inputAction); } void MyWidget::contextMenuEvent(QContextMenuEvent *event) { menu->exec(event->globalPos()); } void MyWidget::showInputDialog() { bool ok; QString text = QInputDialog::getText(this, tr("输入框"), tr("请输入内容:"), QLineEdit::Normal, QString(), &ok); if (ok && !text.isEmpty()) { // 处理用户输入的内容 } } 在上述示例代码中,自定义的QWidget派生类MyWidget实现了菜单功能。在构造函数中,创建一个QMenu对象,并添加一个QAction对象到菜单中。QAction对象的触发信号与槽函数showInputDialog()关联。在showInputDialog()函数中,创建一个QInputDialog对象,并调用exec()函数显示输入对话框。用户输入内容后,可以根据需要进行处理。 ### 回答3: 在QT中实现菜单点击出现输入框,可以通过以下步骤进行: 1. 创建一个QWidget或者QMainWindow的派生类,作为主窗口。 2. 在主窗口中,重写其菜单事件函数contextMenuEvent(QContextMenuEvent *event),该函数在点击时会被调用。 3. 在重写的contextMenuEvent函数中,创建一个QMenu对象作为菜单。 4. 在QMenu对象中,使用addAction函数添加一个QAction对象,该对象表示菜单中的一个选项。 5. 为QAction对象的triggered()信号关联一个槽函数,该槽函数在菜单被点击时被执行。 6. 在槽函数中,创建一个QInputDialog对象,作为输入框。 7. 设置QInputDialog的标题、提示信息等属性。 8. 调用QInputDialog的exec()函数显示输入框,并通过返回值判断用户的操作。 9. 根据用户的操作,可以使用QInputDialog的textValue()函数获取用户输入的文本内容。 10. 根据需求,做相应的处理,比如将输入的内容显示在界面上或者进行其他操作。 最后,编译运行程序,当在主窗口中点击时,会弹出菜单,点击菜单中的选项后,会出现一个输入框供用户输入内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值