Добрый день!
Суть вопроса при вводе с клавиатуры в QTextEdit символов кириллицы вместо одного символа вводится два. Дополнительных коннектов на edit нет.
При переопределении для родительского виджета keyPressEvent() при вводи латиницы или цифр слот отрабатывает один раз, но при вводе кириллицы дважды. Подскажет кто-нибудь, где я дурак?
Header
#ifndef EXPENSE_H
#define EXPENSE_H
#include <QWidget>
#include <QtGui>
class Expense : public QWidget
{
Q_OBJECT
public:
Expense(QWidget *parent);
~Expense();
private:
QTextEdit *txt;
void createWindow();
virtual void keyPressEvent(QKeyEvent *);
};
#endif // EXPENSE_H
Sourse
#include "expense.h"
Expense::Expense(QWidget *parent):QWidget(parent){
createWindow();
}
Expense::~Expense(){
delete txt;
}
void Expense::keyPressEvent(QKeyEvent * event){
switch (event->key()){
case Qt::Key_Escape:
case Qt::Key_Home:{
close();
break;
}
case Qt::Key_Return:{
if (event->modifiers() == Qt::ShiftModifier)
txt->setText(txt->toPlainText()+"\n");
else{
txt->clear();
close();
}
break;
}
default:{
QString text = txt->toPlainText()+event->text();
txt->clear();
txt->setPlainText(text);
}
}
}
void Expense::createWindow(){
QVBoxLayout * layout = new QVBoxLayout;
txt = new QTextEdit(this);
layout->addWidget(txt);
setLayout(layout);
}