qt中lineedit输入不了中文

具体原因暂时没有找到
解决办法

  1. 提升控件并重写下边的事件函数

构造函数

	this->setAttribute(Qt::WA_InputMethodEnabled, true);
 	this->setAttribute(Qt::WA_KeyCompression, true);
	this->setFocusPolicy(Qt::WheelFocus);

在LineEdit中重写事件函数

 	重写事件
 	QVariant inputMethodQuery(Qt::InputMethodQuery) const override;
    void inputMethodEvent(QInputMethodEvent *) override;

void inputMethodEvent(QInputMethodEvent *) override;

/*当切换成中文输入法时候会进入这个函数*/
void inputMethodEvent(QInputMethodEvent *) 
{
	/*继承自QLineEdit类函数,commitString()是输入提交的信息,控件之前的值丢失加的*/
	setText(this->text() + e->commitString());
}
/*暂时不太清楚这个有没有起作用,就这样子写了,不清楚原理,所以先将解决办法记录一下*/
QVariant TypeWidget::inputMethodQuery(Qt::InputMethodQuery query) const
{
    switch (query) {
      default:
        return QWidget::inputMethodQuery (query);
    }
}
  1. 如果控件在qwidget中,最好也重写一下上边的事件,我重写了事件,实际上并没有做什么有用的操作,反正就是好了,我也不太清楚。
    回头找原因。
  2. 禁止输入中文的设置方法
    this->setAttribute(Qt::WA_InputMethodEnabled, false);

参考博文https://www.codeleading.com/article/6775973813/

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值