Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: spigel от Май 16, 2007, 10:28



Название: блокирование селекции в QLineEdit
Отправлено: spigel от Май 16, 2007, 10:28
Как заблокировать выбор/выделение текста в QLineEdit?

в числе попыток было:
 лишение фокуса (фокус ушел - селекция осталась)
 задание цвета подсветки селекции (по прежнему Ctrl-C будет копировать выделенное содержимое, пусть оно и не заметно).


Название: блокирование селекции в QLineEdit
Отправлено: WW от Май 16, 2007, 10:38
void QLineEdit::deselect () ????


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

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

 например в среде Windows являются не выделяемыми заголовки окон или к примеру в программе Калькулятор вы не сможете выбрать отдельную цифру.


Название: блокирование селекции в QLineEdit
Отправлено: WW от Май 16, 2007, 16:07
setEnabled ( bool )
или использовать QLabel


Название: блокирование селекции в QLineEdit
Отправлено: spigel от Май 16, 2007, 16:59
setEnabled /setDisabled блокирует окно совершенно, когда невозможно получить даже keyPressEvent
QLabel может заменить QLineEdit?


Название: блокирование селекции в QLineEdit
Отправлено: WW от Май 16, 2007, 18:05
Если ты даешь пользователю возможность ввода текста в поле, то зачем блокировать выделение??? А если юзер ввел строку, сделал кучу ошибок и одним махом решил все исправить? Вначале поставь себя на место пользователя и посмотри на свои глаза в зеркало от пользования такой прогой. Если задача - не дать скопировать, то решается она по другому. все это имхо


Название: блокирование селекции в QLineEdit
Отправлено: Sergeich от Май 16, 2007, 18:12
Цитата: "WW"
Если ты даешь пользователю возможность ввода текста в поле, то зачем блокировать выделение??? А если юзер ввел строку, сделал кучу ошибок и одним махом решил все исправить? Вначале поставь себя на место пользователя и посмотри на свои глаза в зеркало от пользования такой прогой. Если задача - не дать скопировать, то решается она по другому. все это имхо

Полностью поддерживаю. Зачем это вообще нужно?
Хотя, в принципе задача решается установкой event filter.


Название: блокирование селекции в QLineEdit
Отправлено: spigel от Май 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."