广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    Qt右键菜单是英文怎么办

    来源:网络收集  点击:  时间:2024-02-11
    【导读】:
    许多新学Qt编程的朋友一定曾碰到过这样的情况,就是程序运行时界面的各项字符串都是中文,右键菜单却偏偏全是英文,真叫人哭笑不得。哎哟哟,这正应了老鸟程序员的那句调侃话语:“编程这碗饭,看起来山珍海味,吃在嘴里却全是砂呀。年轻力壮的码农们,这又该如何是好呢?”工具/原料moreQt一、问题描述1/1分步阅读

    在进行Qt编程时,要想使界面上的文字显示为中文,比较常用的方法有两种:

    1)在界面设计器中全部使用中文

    2)在初始代码中使用英文,随后使用工具进行翻译,最后再载入翻译文件,从而使得界面呈现为中文

    不过,尽管我们为了让Qt界面显示中文煞费苦心,但程序运行时弹出的右键菜单却仍然为英文。

    二、解决办法1/7

    要想使右键菜单上的字符显示为中文,我们需要重新实现相应控件的contextMenuEvent函数。该函数继承于父类的虚函数,访问权限为protected。

    在这个示例中,由于我们需要在编辑框内(QTextEdit类)弹出右键菜单,因此就需要重新实现QTextEdit的contextMenuEvent函数。

    2/7

    为了做到这一点,我们需要往工程中添加一个新类,该类继承于QTextEdit,然后再在这个新类中实现contextMenuEvent函数。添加新类的方法是在工程名上右击鼠标,然后选择“添加新文件”。接着,在弹出的对话框中选择C++类。

    不过,这儿有一个问题。由于在添加新类时,并不能直接选择继承于QTextEdit,因此在这里我们就先选择继承于QWidget,添加好以后再在代码中进行修改。

    3/7

    新类添加好以后,打开新类的头文件,再将QWidget改为QTextEdit。注意,包含的头文件也需要修改。

    4/7

    然后,在新类的头文件中添加protected类型的contextMenuEvent函数。

    注意,由于是继承于父类的虚函数,Qt会自动将其函数名显示斜体,以示区别普通函数。

    5/7

    随后,我们在新类的源文件中实现该函数。简单起见,我在此就只创建了一个菜单项作为示例。在这儿提醒大家注意,别忘了包含相应的头文件。

    6/7

    现在,就只剩下最后一步了。我们在主程序中定义一个新类类型的变量,然后像往常一样使用即可。

    7/7

    重新编译程序,看看,是不是菜单已经变成中文了?

    三、注意1/1

    在contextMenuEvent函数的代码中直接使用中文的方法并不妥当,以上示例我只是为了简单起见。

    建议:在代码中仍然使用英文,并用tr函数将待翻译的字符串括起来,然后再使用Qt自带的Linguist工具将其译成中文,最后载入翻译文件。

    若想知道Qt怎样使用翻译文件,可以参考我的Qt编程经验系列《Qt怎样翻译程序中的字符串:提取和翻译》和《Qt怎样翻译程序中的字符串:生成和加载》。

    注意事项

    要在哪个组件上弹出中文菜单,就重新实现该组件的contextMenuEvent函数。

    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_23483.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-06 19:30:24  耗时:0.032
    0.0323s