Название: QLineEdit + undo Отправлено: Igors от Апрель 06, 2015, 11:13 Добрый день
QLineEdit в фокусе (мигает каретка). Как сделать так чтобы нажатие Cmd-Z вызывало команду меню Undo (имеется и enabled)? Пробовал навесить фильтр на QLineEdit и вернуть true, менял там событие accept/ignore - но до меню дело все равно не доходит. Спасибо Название: Re: QLineEdit + undo Отправлено: GreatSnake от Апрель 06, 2015, 11:24 Невесить QShortcut.
Название: Re: QLineEdit + undo Отправлено: Igors от Апрель 06, 2015, 12:09 Невесить QShortcut. Не очень понял, наверное addAction (где делать то же что из меню), а той action назначить shortcut. Тогда надо самому подсвечивать меню и проверять доступно ли сейчас undo. Название: Re: QLineEdit + undo Отправлено: GreatSnake от Апрель 06, 2015, 12:24 А разве про меню хоть что-то упоминалось?
Название: Re: QLineEdit + undo Отправлено: Igors от Апрель 06, 2015, 13:40 А разве про меню хоть что-то упоминалось? Мной упоминалось (см первый пост), а что Вы имели ввиду - не знаю :)Получилось, "не то фильтровал", надо было QEvent::ShortcutOverride Название: Re: QLineEdit + undo Отправлено: 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() ) ); Название: Re: QLineEdit + undo Отправлено: kai666_73 от Апрель 06, 2015, 14:16 Сделать что-нибудь по аналогии вот этого shortcut'а вставки текста (наскоро выдрано из проекта,лень править): Правильнее уже использоватьQShortcut* pasteTextShortcut = new QShortcut( QKeySequence( tr( "Ctrl+V", "Вставить текст" ) ), tv ); pasteTextShortcut->setContext( Qt::WidgetShortcut ); connect( pasteTextShortcut, SIGNAL( activated() ), this, SLOT( onPasteText() ) ); Код
Название: Re: QLineEdit + undo Отправлено: Igors от Апрель 06, 2015, 14:44 Вообще-то требовалось "отключить" (т.е. сделать так чтобы QLineEdit не сжирал событие и оно приходило на главное меню). Ну ладно, если разговор зашел, то поясните
- куда (или как) клеить тот shortcut чтобы он сработал и выдал activate - откуда взять onUndoText (по аналогии), который должен иметь тот же эффект что выбор из меню Спасибо Название: Re: QLineEdit + undo Отправлено: kambala от Апрель 06, 2015, 15:02 а почему стандартный шорткат не работает?
Название: Re: QLineEdit + undo Отправлено: AlexEx от Апрель 06, 2015, 15:10 Конструктор QShortCut получает в качестве parent'a указатель на lineEdit. setContext( Qt::WidgetShortcut ) означает, что shortcut активен, если parent имеет фокус.
Название: Re: QLineEdit + undo Отправлено: AlexEx от Апрель 06, 2015, 15:14 З.Ы. onUndoText() - это void QLineEdit::undo () [slot]
Название: Re: QLineEdit + undo Отправлено: Igors от Апрель 06, 2015, 15:35 а почему стандартный шорткат не работает? Работает, но не устраивает. Пример: юзер вводит текст - все норм, пока меня устраивает то undo что в QLineEdit. Но вот юзер напр нажал Enter. Данные приняты, окна обновились. Вот теперь мне нужно получать именно событие/сигнал undo а не "текст опять изменен". Др словами после приема данных undo должно выполняться однообразно, фокус не волнует.Конструктор QShortCut получает в качестве parent'a указатель на lineEdit. setContext( Qt::WidgetShortcut ) означает, что shortcut активен, если parent имеет фокус. Т.е. и так можно, назначил родителя и работает? Не знал, думал надо еще QAction :)Название: Re: QLineEdit + undo Отправлено: AlexEx от Апрель 06, 2015, 15:49 Если я правильно понимаю ситуацию, то после Enter'a не понятно в каком контроле делать undo. Того гляди QUndoStack придется прикручивать :).
Название: Re: QLineEdit + undo Отправлено: Igors от Апрель 06, 2015, 15:52 Если я правильно понимаю ситуацию, то после Enter'a не понятно в каком контроле делать undo. Того гляди QUndoStack придется прикручивать :). Там все прикручено, нужно только чтобы QLineEdit не встревал со своим личным undoНазвание: Re: QLineEdit + undo Отправлено: AlexEx от Апрель 06, 2015, 16:10 На уровне зыбких фантазий, ибо всю картину мне не видно :): дисконнектить вообще личное undo или соорудить для lineEdit'a свое меню на базе createStandardContextMenu();
|