QTextEdit перевод вводимых символов в верхний регистр |
Здравствуйте, гость ( Вход | Регистрация )
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 невозможно изменить модификатор(изменить на шифт нажат) вот тут и тупик. кто что подскажет? |
|
|
maint |
17.12.2010, 20:19
Сообщение
#2
|
Участник Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: 2 |
|
|
|
FantasyOr |
18.12.2010, 12:04
Сообщение
#3
|
Студент Группа: Участник Сообщений: 75 Регистрация: 13.8.2010 Пользователь №: 1956 Спасибо сказали: 4 раз(а) Репутация: 0 |
maint Вы намекаете на:
textEdit1.setInputMethodHints(Qt::ImhUppercaseOnly); уже пробовал, не работает. я может и не прав, но причем тут хинт + "Qt::ImhUppercaseOnly 0x40000 Only upper case letter input is allowed." вольный перевод: "допускается ввод только букв в верхнем регистре", а мне нужно, автоматически поднимать регистр, на подобии: LineEdit1->setInputMask(">"); http://qtdocs.narod.ru/4.1.0/doc/html/qlineedit.html "> - Все следующие алфавитный символы переводятся в верхний регистр." |
|
|
MoPDoBoPoT |
18.12.2010, 22:18
Сообщение
#4
|
Участник Группа: Участник Сообщений: 172 Регистрация: 7.5.2009 Из: Москва Пользователь №: 738 Спасибо сказали: 44 раз(а) Репутация: 9 |
2) наследуемся от QTextEdit и переопределить keyPressEvent, но в QKeyEvent невозможно изменить модификатор(изменить на шифт нажат) вот тут и тупик. Зато можно подменить своим событием. Но с модификаторами лучше не играться, а то можно на трудноотлавливаемый баг нарваться. Кстати, если это нужно в качестве единичного использования, то можно воспользоваться фильтром событий (для этого читать про QObject::installEventFilter() QApplication::sendEvent()) |
|
|
FantasyOr |
22.12.2010, 15:31
Сообщение
#5
|
Студент Группа: Участник Сообщений: 75 Регистрация: 13.8.2010 Пользователь №: 1956 Спасибо сказали: 4 раз(а) Репутация: 0 |
справился с этой закавыкой так:
|
|
|
Текстовая версия | Сейчас: 22.12.2024, 8:08 |