Russian Qt Forum
Ноябрь 24, 2024, 14:27
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
QLineEdit + undo
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: QLineEdit + undo (Прочитано 7562 раз)
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
QLineEdit + undo
«
:
Апрель 06, 2015, 11:13 »
Добрый день
QLineEdit в фокусе (мигает каретка). Как сделать так чтобы нажатие Cmd-Z вызывало команду меню Undo (имеется и enabled)? Пробовал навесить фильтр на QLineEdit и вернуть true, менял там событие accept/ignore - но до меню дело все равно не доходит.
Спасибо
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: QLineEdit + undo
«
Ответ #1 :
Апрель 06, 2015, 11:24 »
Невесить QShortcut.
Записан
Qt 5.11/4.8.7 (X11/Win)
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: QLineEdit + undo
«
Ответ #2 :
Апрель 06, 2015, 12:09 »
Цитата: GreatSnake от Апрель 06, 2015, 11:24
Невесить QShortcut.
Не очень понял, наверное addAction (где делать то же что из меню), а той action назначить shortcut. Тогда надо самому подсвечивать меню и проверять доступно ли сейчас undo.
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: QLineEdit + undo
«
Ответ #3 :
Апрель 06, 2015, 12:24 »
А разве про меню хоть что-то упоминалось?
Записан
Qt 5.11/4.8.7 (X11/Win)
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: QLineEdit + undo
«
Ответ #4 :
Апрель 06, 2015, 13:40 »
Цитата: GreatSnake от Апрель 06, 2015, 12:24
А разве про меню хоть что-то упоминалось?
Мной упоминалось (см первый пост), а что Вы имели ввиду - не знаю
Получилось, "не то фильтровал", надо было QEvent::ShortcutOverride
Записан
AlexEx
Чайник
Offline
Сообщений: 76
Re: QLineEdit + undo
«
Ответ #5 :
Апрель 06, 2015, 13:46 »
Сделать что-нибудь по аналогии вот этого shortcut'а вставки текста (наскоро выдрано из проекта,лень править):
QShortcut* pasteTextShortcut = new QShortcut( QKeySequence( tr( "Ctrl+V", "Вставить текст" ) ), tv );
pasteTextShortcut->setContext( Qt::WidgetShortcut );
connect( pasteTextShortcut, SIGNAL( activated() ), this, SLOT( onPasteText() ) );
Записан
kai666_73
Крякер
Offline
Сообщений: 319
Re: QLineEdit + undo
«
Ответ #6 :
Апрель 06, 2015, 14:16 »
Цитата: AlexEx от Апрель 06, 2015, 13:46
Сделать что-нибудь по аналогии вот этого shortcut'а вставки текста (наскоро выдрано из проекта,лень править):
QShortcut* pasteTextShortcut = new QShortcut( QKeySequence( tr( "Ctrl+V", "Вставить текст" ) ), tv );
pasteTextShortcut->setContext( Qt::WidgetShortcut );
connect( pasteTextShortcut, SIGNAL( activated() ), this, SLOT( onPasteText() ) );
Правильнее уже использовать
Код
C++ (Qt)
QKeySequence
(
QKeySequence
::
Undo
)
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: QLineEdit + undo
«
Ответ #7 :
Апрель 06, 2015, 14:44 »
Вообще-то требовалось "отключить" (т.е. сделать так чтобы QLineEdit не сжирал событие и оно приходило на главное меню). Ну ладно, если разговор зашел, то поясните
- куда (или как) клеить тот shortcut чтобы он сработал и выдал activate
- откуда взять onUndoText (по аналогии), который должен иметь тот же эффект что выбор из меню
Спасибо
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: QLineEdit + undo
«
Ответ #8 :
Апрель 06, 2015, 15:02 »
а почему стандартный шорткат не работает?
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
AlexEx
Чайник
Offline
Сообщений: 76
Re: QLineEdit + undo
«
Ответ #9 :
Апрель 06, 2015, 15:10 »
Конструктор QShortCut получает в качестве parent'a указатель на lineEdit. setContext( Qt::WidgetShortcut ) означает, что shortcut активен, если parent имеет фокус.
Записан
AlexEx
Чайник
Offline
Сообщений: 76
Re: QLineEdit + undo
«
Ответ #10 :
Апрель 06, 2015, 15:14 »
З.Ы. onUndoText() - это void QLineEdit::undo () [slot]
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: QLineEdit + undo
«
Ответ #11 :
Апрель 06, 2015, 15:35 »
Цитата: kambala от Апрель 06, 2015, 15:02
а почему стандартный шорткат не работает?
Работает, но не устраивает. Пример: юзер вводит текст - все норм, пока меня устраивает то undo что в QLineEdit. Но вот юзер напр нажал Enter. Данные приняты, окна обновились. Вот теперь мне нужно получать именно событие/сигнал undo а не "текст опять изменен". Др словами после приема данных undo должно выполняться однообразно, фокус не волнует.
Цитата: AlexEx от Апрель 06, 2015, 15:10
Конструктор QShortCut получает в качестве parent'a указатель на lineEdit. setContext( Qt::WidgetShortcut ) означает, что shortcut активен, если parent имеет фокус.
Т.е. и так можно, назначил родителя и работает? Не знал, думал надо еще QAction
Записан
AlexEx
Чайник
Offline
Сообщений: 76
Re: QLineEdit + undo
«
Ответ #12 :
Апрель 06, 2015, 15:49 »
Если я правильно понимаю ситуацию, то после Enter'a не понятно в каком контроле делать undo. Того гляди QUndoStack придется прикручивать
.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: QLineEdit + undo
«
Ответ #13 :
Апрель 06, 2015, 15:52 »
Цитата: AlexEx от Апрель 06, 2015, 15:49
Если я правильно понимаю ситуацию, то после Enter'a не понятно в каком контроле делать undo. Того гляди QUndoStack придется прикручивать
.
Там все прикручено, нужно только чтобы QLineEdit не встревал со своим личным undo
Записан
AlexEx
Чайник
Offline
Сообщений: 76
Re: QLineEdit + undo
«
Ответ #14 :
Апрель 06, 2015, 16:10 »
На уровне зыбких фантазий, ибо всю картину мне не видно
: дисконнектить вообще личное undo или соорудить для lineEdit'a свое меню на базе createStandardContextMenu();
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...