您的位置:首页 > 其它

解决syszuxpinyin重复点击lineEdit无法弹出输入法界面和无法删除原有内容问题

2013-04-21 12:36 766 查看
解决方法均来源于论坛,自己把它给整理一下

1,因为自己做的界面用到了lineedit,但是发现第一次点击lineedit获得焦点就可以弹出输入法界面,但是再重复点击的时候就不能弹出来了,必须重新获得焦点,于是通过重载重载了QLineEdit的mousePressEvent

在mousePressEvent加上一个自定义的信号 emit clicked()

重载代码如下:

mylineedit.h

#ifndef MYLINEEDIT_H

#define MYLINEEDIT_H

#include <QLineEdit>

#include <QMouseEvent>

class mylineedit : public QLineEdit

{

Q_OBJECT

public:

explicit mylineedit(QWidget *parent = 0);

protected:

virtual void mousePressEvent(QMouseEvent *event);

signals:

void clicked();

public slots:

};

#endif // MYLINEEDIT_H

mylineedit.cpp

#include "mylineedit.h"

mylineedit::mylineedit(QWidget *parent) :

QLineEdit(parent)

{

}

void mylineedit::mousePressEvent(QMouseEvent *event) {

if (event->button() == Qt::LeftButton) {

emit clicked();

}

QLineEdit::mousePressEvent(event);

}

然后再在creator中把lineedit提升为mylineedit,这样就跟按钮一样了,只要点击编辑框就

clearFocus()

setFocus()

槽函数如下:

void query::le_device_mf_clicked()

{

ui->lineEdit_device_Mf->clearFocus();

ui->lineEdit_device_Mf->setFocus();

}

然后再用connect把信号和槽函数连接起来就好了,这样就解决了连续输入不能弹出输入法的问题。

2,另外发现输入法不能删除已经编辑的内容,也就是只能往lineedit里面添加内容不能删除已经添加过的内容。这个比较郁闷,后来找到解决方法,但是只能适用于lineedit控件。

方法如下:

首先在syszuxim.h文件中的class SyszuxIM类中声明一个指针对象QLineEdit *le。

然后在syszuxim.cpp文件中的构造函数中添加 le = new QLineEdit; //added by me,在 void SyszuxIM::updateHandler(int type)函数中的

case QWSInputMethod::FocusIn:后添加代码

{

QWidget *current_focus_widget=new QWidget; //added by me

current_focus_widget = QApplication::focusWidget(); //added by me

le= qobject_cast<QLineEdit*>(current_focus_widget); //added by me

syszuxpinyin->show();

syszuxpinyin->lineEdit_window->setText(le->text()); //added by me

break;

} 注意要加上大括号。

将 void SyszuxIM::confirmString(QString gemfield) 函数里面的 sendCommitString(gemfield); 注释掉,添加 le->setText(gemfield);

保存后进行编译,即可生效。

注意这种方法只对QLineEdit控件有效,如果是其他控件,当焦点置于其他控件时会导致程序发生错误退出。这里我就比较悲剧了,因为我还有用到tableview显示数据库中的数据,于是这样设置了后,一点tableview程序就死掉了。于是这种方法不能用,只能再添加一个按钮clear负责把所填写的内容给清零。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐