精华内容
下载资源
问答
  • pyqt QLineEdit QTextEdit 右键菜单汉化 调用方法: translator = QTranslator() translator.load('qt_zh_CN.qm') app.installTranslator(translator) translator2 = QTranslator() translator2.load('widgets....
  • qt中QLineEdit右键菜单

    2021-06-18 11:17:45
    如何改变右键菜单鼠标选中后字体的颜色,因为默认鼠标选中字体,字体会变白色
  • 原文地址:Qt之中文显示(QMessageBox、QLineEdit右键菜单等)作者:一去丶二三里  在编写Qt程序的时候,总会碰到中文问题,一直都很困惑,原本在使用QLineEdit的时候总会出现右键英文的情况,开始的时候是将...
        

        在编写Qt程序的时候,总会碰到中文问题,一直都很困惑,原本在使用QLineEdit的时候总会出现右键英文的情况,开始的时候是将邮件功能屏蔽掉。使用setContextMenuPolicy(Qt::NoContextMenu)来设置无右键菜单,但是后来发现这虽然省事,但是有不足之处,密码框可以没有右键菜单、不可复制、粘贴,但是普通的文本框还是得需要此项功能的,所以就摸索着如何实现,做起来也很是简单!

    1、从Qt安装目录下面将文件“D:SoftWareQtOpenSourcetranslationsqt_zh_CN.qm”复制一份到你的项目目录下。

    2、建立资源文件(QRC.qrc)

    位置为工程目录下:

    内容:


            qt_zh_CN.qm
       

    3、在主函数main.cpp中加载相应的资源文件。

    #include
    #include "main_widget.h"

    int main(int argc, char *argv[])
    {
        //创建QApplication对象,管理整个应用程序的资源,通过argc和argv来获取它自己的命令行参数;
        QApplication app(argc, argv);

        //设置编码,一般在Window开发环境里,是GBK编码,在Linux开发环境里,是utf-8编码
        //获取系统编码,否则移植会出现乱码
        QTextCodec *codec = QTextCodec::codecForName("System");

        //设置和对本地文件系统读写时候的默认编码格式
        QTextCodec::setCodecForLocale(codec);

        //设置传给tr函数时的默认字符串编码
        QTextCodec::setCodecForTr(codec);

        //用在字符常量或者QByteArray构造QString对象时使用的一种编码方式
        QTextCodec::setCodecForCStrings(codec);  


        //加载Qt中的资源文件,使Qt显示中文(包括QMessageBox、文本框右键菜单等)
        QTranslator translator; 
        translator.load(":/qm/qt_zh_CN"); 
        app.installTranslator(&translator); 

     

        MainWidget main_widget;
        main_widget.show();  

     

        return app.exec();
    }


    注:
        技术在于交流、沟通,转载请注明出处并保持作品的完整性。
    展开全文
  • 原文地址:Qt之中文显示(QMessageBox、QLineEdit右键菜单等)作者:一去丶二三里 在编写Qt程序的时候,总会碰到中文问题,一直都很困惑,原本在使用QLineEdit的时候总会出现右键英文的情况,开始的时候是将邮件功能...

        在编写Qt程序的时候,总会碰到中文问题,一直都很困惑,原本在使用QLineEdit的时候总会出现右键英文的情况,开始的时候是将邮件功能屏蔽掉。使用setContextMenuPolicy(Qt::NoContextMenu)来设置无右键菜单,但是后来发现这虽然省事,但是有不足之处,密码框可以没有右键菜单、不可复制、粘贴,但是普通的文本框还是得需要此项功能的,所以就摸索着如何实现,做起来也很是简单!

    1、从Qt安装目录下面将文件“D:SoftWareQtOpenSourcetranslationsqt_zh_CN.qm”复制一份到你的项目目录下。

    2、建立资源文件(QRC.qrc)

    位置为工程目录下:

    内容:


            qt_zh_CN.qm
       

    3、在主函数main.cpp中加载相应的资源文件。

    #include
    #include "main_widget.h"

    int main(int argc, char *argv[])
    {
        //创建QApplication对象,管理整个应用程序的资源,通过argc和argv来获取它自己的命令行参数;
        QApplication app(argc, argv);

        //设置编码,一般在Window开发环境里,是GBK编码,在Linux开发环境里,是utf-8编码
        //获取系统编码,否则移植会出现乱码
        QTextCodec *codec = QTextCodec::codecForName("System");

        //设置和对本地文件系统读写时候的默认编码格式
        QTextCodec::setCodecForLocale(codec);

        //设置传给tr函数时的默认字符串编码
        QTextCodec::setCodecForTr(codec);

        //用在字符常量或者QByteArray构造QString对象时使用的一种编码方式
        QTextCodec::setCodecForCStrings(codec);  


        //加载Qt中的资源文件,使Qt显示中文(包括QMessageBox、文本框右键菜单等)
        QTranslator translator; 
        translator.load(":/qm/qt_zh_CN"); 
        app.installTranslator(&translator); 

     

        MainWidget main_widget;
        main_widget.show();  

     

        return app.exec();
    }


    注:
        技术在于交流、沟通,转载请注明出处并保持作品的完整性。
    展开全文
  • 文章目录一、QLineEdit说明二、右键菜单定制三、相关文章 一、QLineEdit说明 QLineEdit是单行文本框,不同于QTextEdit,他只能显示一行文本,通常可以用作用户名、密码和搜索框等。它还提供了一些列的信号和槽,方便...

    一、QLineEdit说明

    QLineEdit是单行文本框,不同于QTextEdit,他只能显示一行文本,通常可以用作用户名、密码和搜索框等。它还提供了一些列的信号和槽,方便我们使用,有兴趣的小伙伴可以直接去看帮助文档,我在这里就不多废话了。但是呢,我在这里却要单独的说几个接口,因为他们很容易被人忽略,但是却又是一个很好用、可以经常用到的功能。

    • addAction(QAction *action, ActionPosition position):可以在编辑框的开始或者末尾添加一个action,方便我们操作,一个完美的搜索框顿时出现。
    • setEchoMode(EchoMode):文本显示模式,通过这个接口可以设置成为密码框,其中的参数意思一次为:正常、什么都不显示、密码、刚输入时显示字符紧接着变成密码状态
    • setCompleter(QCompleter *c):看这个单词的意思:完成。顾名思义这个借口可以设置文编辑框编辑时自动补齐的功能,类似于百度输入框的自动提示功能,如果想要了解细节功能请自行百度,或者移步QCompleter自动补全
    • setSelection(int start, int length):设置是否能选中文本
    • setValidator(const QValidator *v):内容验证器

    图1 addAction使用截图

    如图1所示,是addAction使用截图,右侧按钮图标是我使用style()->standardPixmap(QStyle::SP_TitleBarMinButton)添加的,

    二、右键菜单定制

    本文描述的3种右键菜单定制,也同样适用于其他继承自QWidget的类。

    首先我们看下图2所示,这是qt帮助文档中的一个枚举,这个枚举对于制作右键菜单有至关重要的作用,相信大多数的小伙伴肯定都见过,也都明白是什么意思。

    图2 ContextMenuPolicy枚举

    其实qt的命名还是比较合理的,从英文单词上我们大概就能知道这个宏的作用,下面我来一次说下这个几个宏的含义。1、没有右键菜单;2、组织右键菜单弹出,不同于第一个,该宏还阻止事件传递给父窗口;3、缺省的值,右键菜单在窗口类的contextMenuEvent函数中处理;4、使用窗口的action来弹出菜单,这个对于table和tree来说比较方便;5、右键事件在customContextMenuRequested对应的槽函数中实现,当然了槽需要我们自己写。

    方法1:

    实现customContextMenuRequested信号的接口,并调用setContextMenuPolicy设置Qt::CustomContextMenu参数,使用connect链接,具体示例我就不写了。

    方法2:

    设置contextMenuPolicy为Qt::DefaultContextMenu,这个也是默认值,然后实现QWidget类的contextMenuEvent接口,示例代码如下:

    void MyTextEdit::contextMenuEvent(QContextMenuEvent *event)
      {
          QMenu *menu = createStandardContextMenu();//默认的标准右键菜单,如果不需要刻意完全自己实现
          menu->addAction(tr("My Menu Item"));
          //...
          menu->exec(event->globalPos());
          delete menu;
      }
    

    方法3:

    重写父类的mousePressEvent函数,处理鼠标右键事件,示例代码类似于:

    void DragList::mousePressEvent(QMouseEvent *event)
    {
        if (event->button() == Qt::LeftButton)
        {
            startPos = event->pos();
            dragItem = itemAt(event->pos());
        }
        QListWidget::mousePressEvent(event);
    }
    

    上面的代码我只为了说明问题,没有任何意义。

    看到这儿了,基本的右键菜单定制我就差不多描述完了,方法1和方法2都是使用传统的方式,方法3有些取巧。

    三、相关文章

    Qt之默认菜单语言设置

    Qt之弹出式菜单阴影

    Qt之自定义检索框

    QTextEdit之最大字符数


    如果您觉得文章不错,不妨给个打赏,写作不易,感谢各位的支持。您的支持是我最大的动力,谢谢!!!




    很重要–转载声明

    1. 本站文章无特别说明,皆为原创,版权所有,转载时请用链接的方式,给出原文出处。同时写上原作者:朝十晚八 or Twowords

    2. 如要转载,请原文转载,如在转载时修改本文,请事先告知,谢绝在转载时通过修改本文达到有利于转载者的目的。


    展开全文
  • 使用Qt的时候,经常会遇到英文问题,例如:QMessageBox中的按钮、QLineEdit、QSpinBox、QScrollBar中的右键菜单等。通常情况下,我们软件都不会是纯英文的,那么如何处理这些问题呢?其实这也属于国际化的一部分。 ...

    简介

    使用Qt的时候,经常会遇到英文问题,例如:QMessageBox中的按钮、QLineEdit、QSpinBox、QScrollBar中的右键菜单等。通常情况下,我们软件都不会是纯英文的,那么如何处理这些问题呢?其实这也属于国际化的一部分。

    这里写图片描述 这里写图片描述 这里写图片描述

    下面,以中英文切换为例来为大家分享,其它语言切换类似。

    查找翻译文件

    • qt_zh_CN.qm

    见名知义,这正是处理中文的翻译文件。

    我们可以从Qt的安装目录中找到它,以我的目录为例:D:\Qt\Qt5.5.1\5.5\msvc2013\translations。

    如果没有此文件,不用着急,我们可以查找此文件对应的翻译源qt_zh_CN.ts。然后使用lrelease,生成对应的qt_zh_CN.qm文件。

    加载翻译文件

    QTranslator translator;  
    translator.load(":/qm/qt_zh_CN.qm");  
    qApp->installTranslator(&translator); 

    有点意思,这样很快的就处理为中文了。

    这里写图片描述 这里写图片描述 这里写图片描述

    切换语言

    加载为中文之后,假设我们存在多语言切换问题,那么当我把语言切换为中文后,之前的qt_zh_CN.qm已经加载了,如何再切换回来呢?

    好了,既然存在load,那么不出意外地话也会存在unload吧。不好意思,翻完所有的API我们并没有发现此接口!

    继续分析,installTranslator是安装翻译文件的意思,那么我们可以想办法把它卸载掉,通过查找我们很容易发现removeTranslator接口。

    官网对此接口的的解释为:Removes the translation file translationFile from the list of translation files used by this application. (It does not delete the translation file from the file system.)

    也就是说:从翻译文件列表中移除翻译文件后,并没有从文件系统中删除翻译文件。

    那么也就是说,通过调用此接口,就可以移除翻译文件了。翻译文件一旦被移除,那么之前所加载的对应语言也就无效了。

    if (language != MyApp::English)
    {
        m_systemTranslator.load(QString(":/qm/qt_zh_CN.qm"));
        qApp->installTranslator(&translator);
    }
    else
    {
        qApp->removeTranslator(&translator);
    }

    如上,切换语言的时候判断当前语言,如果为中文则加载qt_zh_CN.qm翻译文件,然后安装翻译器。否则,进行卸载!

    这样,加载对应语言的时候,无论是自定义的文本,还是系统文本,我们都可以自由的切换了。

    展开全文
  • 使用Qt的时候,经常会遇到英文问题,例如:QMessageBox中的按钮、QLineEdit、QSpinBox、QScrollBar中的右键菜单等。通常情况下,我们软件都不会是纯英文的,那么如何处理这些问题呢?其实这也属于国际化的一部分。 ...
  • 使用setContextMenuPolicy(Qt::NoContextMenu)来设置无右键菜单,但是后来发现这虽然省事,但是有不足之处,密码框可以没有右键菜单、不可复制、粘贴,但是普通的文本框还是得需要此项功能的,所以就摸索着如何实现...
  • 在编写Qt程序的时候,总会碰到中文问题,一直都很困惑,原本在使用QLineEdit的时候总会出现右键...使用setContextMenuPolicy(Qt::NoContextMenu)来设置无右键菜单,但是后来发现这虽然省事,但是有不足之处,密码...
  • 使用Qt的时候,经常会遇到英文问题,例如:QMessageBox中的按钮、QLineEdit、QSpinBox、QScrollBar中的右键菜单等。通常情况下,我们软件都不会是纯英文的,那么如何处理这些问题呢?其实这也属于国际化的一部分。 ...
  • 使用Qt的时候,经常会遇到英文问题,例如:QMessageBox中的按钮、QLineEdit、QSpinBox、QScrollBar中的右键菜单等。通常情况下,我们软件都不会是纯英文的,那么如何处理这些问题呢?其实这也属于国际化的一部分。 ...
  • 使用Qt的时候,经常会遇到英文问题,例如:QMessageBox中的按钮、QLineEdit、QSpinBox、QScrollBar中的右键菜单等。通常情况下,我们软件都不会是纯英文的,那么如何处理这些问题呢?其实这也属于国际化的一部分。 ...
  • QT学习笔记1-右键菜单项汉化 直接上效果 1 汉化完整 2 QTextEdit未汉化 QTextEdit右键菜单的汉化 为了汉化QT5 的文本编辑控件的右键菜单选项网上搜了半天才偶然解决了问题,特此记录于此,供自己回忆以及道友交流...
  • QLineEdit *lineEdit = new QLineEdit; lineEdit->setContextMenuPolicy(Qt::NoContextMenu);
  • 有两个QLineEdit控件,记录用户选择的目录,当用户在QLineEdit控件上右击时,显示右键菜单->浏览目录,点击“浏览目录”时通过资源管理器打开目录。 import os import subprocess import sys from PyQt5....
  • qt中qlineedit和qtextedit右键菜单翻译成中文qlineedit和qtextedit属于qwidget控件,在源码中找到../widgets/widgets.pro,在.pro文件最后加上TRANSLATIONS += widgets_zh_cn.ts
  • Qt如果需要翻译,需要进行加载qm文件,所以在这里我们只需要加载Qt内自带的qt_zh_CN.qm文件就可以解决QLineEdit 右键中文问题,加载方法,(需在main主函数里面写)(qt_zh_CN.qm文件路径:C:\Qt...

空空如也

空空如也

1 2 3 4
收藏数 74
精华内容 29
关键字:

qlineedit右键菜单