crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> QTextEdit перевод вводимых символов в верхний регистр
FantasyOr
  опции профиля:
сообщение 17.12.2010, 19:38
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 75
Регистрация: 13.8.2010
Пользователь №: 1956

Спасибо сказали: 4 раз(а)




Репутация:   0  


Добрый ...
это просто ужас, нигде в интернетах нет решения этой проблемы, казалось бы довольно тривиальный велосипед... анн нет, либо все молчат зная секрет, либо никому не надо? не верю.

есть 2 варианта, и он вроде бы даже работает, но наполовину:
1)
- ловим у QTextEdit textChanged()
- сохраняем положение курсора
- читаем весь текст
- toUpper
- присваиваем поднятый текст обратно QTextEdit
- восстанавливаем курсор
но тут 1 минус:
- очень много ненужных действий

2)
наследуемся от QTextEdit и переопределить keyPressEvent, но в QKeyEvent невозможно изменить модификатор(изменить на шифт нажат) вот тут и тупик.

кто что подскажет?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
FantasyOr
  опции профиля:
сообщение 22.12.2010, 15:31
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 75
Регистрация: 13.8.2010
Пользователь №: 1956

Спасибо сказали: 4 раз(а)




Репутация:   0  


справился с этой закавыкой так:

class SExpTextEdit: public QTextEdit
{
    Q_OBJECT
public:
    SExpTextEdit(QWidget * parent = 0)
        :QTextEdit(parent)
    {}

    SExpTextEdit(const QString & text, QWidget * parent = 0)
        :QTextEdit(text, parent)
    {}

signals:
    void outFocus();

protected:
    void focusOutEvent(QFocusEvent * event)
    {        
        emit outFocus();
        QTextEdit::focusOutEvent(event);
    }

    void keyPressEvent(QKeyEvent * e)
    {
        QKeyEvent * ke;
        ke = new QKeyEvent(QEvent::KeyPress, e->key(), e->modifiers(),
                    e->text().toUpper(), e->isAutoRepeat() );
        QTextEdit::keyPressEvent(ke);
    }

};
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.12.2024, 18:24