Russian Qt Forum
Сентябрь 30, 2024, 14:32 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: блокирование селекции в QLineEdit  (Прочитано 5704 раз)
spigel
Гость
« : Май 16, 2007, 10:28 »

Как заблокировать выбор/выделение текста в QLineEdit?

в числе попыток было:
 лишение фокуса (фокус ушел - селекция осталась)
 задание цвета подсветки селекции (по прежнему Ctrl-C будет копировать выделенное содержимое, пусть оно и не заметно).
Записан
WW
Гость
« Ответ #1 : Май 16, 2007, 10:38 »

void QLineEdit::deselect () Непонимающий?
Записан
spigel
Гость
« Ответ #2 : Май 16, 2007, 15:26 »

deselect снимает селекцию, но не блокирует ее, т.е. после этого вызова вы можете указателем мыши снова выделить текст, тогда как хочется получить другой результат.
когда принципиально нельзя выделять текст в QLineEdit, например такое возможно для элементов QTableView, QTreeView и QListView через указание что элемент или все элементы являются не выбираемыми.
в этом случае они не подсвечиваются светло-синим фоном.

добавлено спустя 3 минуты:

 например в среде Windows являются не выделяемыми заголовки окон или к примеру в программе Калькулятор вы не сможете выбрать отдельную цифру.
Записан
WW
Гость
« Ответ #3 : Май 16, 2007, 16:07 »

setEnabled ( bool )
или использовать QLabel
Записан
spigel
Гость
« Ответ #4 : Май 16, 2007, 16:59 »

setEnabled /setDisabled блокирует окно совершенно, когда невозможно получить даже keyPressEvent
QLabel может заменить QLineEdit?
Записан
WW
Гость
« Ответ #5 : Май 16, 2007, 18:05 »

Если ты даешь пользователю возможность ввода текста в поле, то зачем блокировать выделение??? А если юзер ввел строку, сделал кучу ошибок и одним махом решил все исправить? Вначале поставь себя на место пользователя и посмотри на свои глаза в зеркало от пользования такой прогой. Если задача - не дать скопировать, то решается она по другому. все это имхо
Записан
Sergeich
Гость
« Ответ #6 : Май 16, 2007, 18:12 »

Цитата: "WW"
Если ты даешь пользователю возможность ввода текста в поле, то зачем блокировать выделение??? А если юзер ввел строку, сделал кучу ошибок и одним махом решил все исправить? Вначале поставь себя на место пользователя и посмотри на свои глаза в зеркало от пользования такой прогой. Если задача - не дать скопировать, то решается она по другому. все это имхо

Полностью поддерживаю. Зачем это вообще нужно?
Хотя, в принципе задача решается установкой event filter.
Записан
spigel
Гость
« Ответ #7 : Май 17, 2007, 09:44 »

Вы подходите немного с другой точки зрения = не как решить проблему, а как ее обойти или просто сказать что решать ее не имеет смысла.

какой принцип использовать для решения задачи с помощью 'event filter'?

добавлено спустя 11 минут:

 почему нужно использовать QLabel, когда есть только QLineEdit?

можно вообще другим путем идти, исходный код есть = взял да и добавил блокировку :-)
чем не принцип?

понятно для чего существуют русские форумы :-D
спасибо, WWW или Сергеич.
Я нашел хорошее решение, которое не требует замены типа объекта (или переписывания его кода) и нет нужды использовать deselect :-D!

добавлено спустя 1 час 48 минут:

 "QLCDNumber is the very oldest part of Qt, tracing its roots back to a BASIC program on the Sinclair Spectrum."
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.149 секунд. Запросов: 21.