Russian Qt Forum
Сентябрь 21, 2024, 04:21
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Метка с возможностью редактирования как QLineEdit
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Метка с возможностью редактирования как QLineEdit (Прочитано 10208 раз)
kdm
Гость
Метка с возможностью редактирования как QLineEdit
«
:
Июль 10, 2010, 15:26 »
Дело в том, что надо было реализовать такой виджет, который отображал метку, как QLabel и мог бы быть редактируемым по double click'у, как QLineEdit, и вновь отображаться, как метка QLabel при потере фокуса и нажатию enter.
Я зделал, так, взял на одном виджете и QLabel и QLineEdit и отображаю их по очереди при соотв. событиях.
Это оптимально или можно было сделать более виртуозно?
И если кто знает, как сделать, чтобы если строка не входит из-за ограничения длины виджета, отображалось бы три точки в конце строки?
Записан
MoPDoBoPoT
Гость
Re: Метка с возможностью редактирования как QLineEdit
«
Ответ #1 :
Июль 10, 2010, 17:01 »
1. Вообще, есть
void QLabel::setTextInteractionFlags( Qt::TextInteractionFlags flags )
, но при QLabel + QLineEdit нагляднее редактирование, хотя это уже дело вкуса.
2. В помощь
QString QFontMetrics::elidedText( const QString & text, Qt::TextElideMode mode, int width, int flags = 0 )
Записан
xokc
Птица говорун
Offline
Сообщений: 976
Re: Метка с возможностью редактирования как QLineEdit
«
Ответ #2 :
Июль 10, 2010, 19:44 »
С помощью qss сделать стиль для QLineEdit , который прячет рамку и т.п. ("превращает QLineEdit в QLabel) и применять его для случаев, когда focused=false.
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: Метка с возможностью редактирования как QLineEdit
«
Ответ #3 :
Июль 10, 2010, 19:47 »
а я бы по аналогии с делегатами в представлениях сделал. Т.е. в нужный момент создавал виджет-редактор помещённый по тем же координатам и с теми же размерами, что и метка. При получении сигнала от виджета-редактора о завершении редактирования, копировал бы данные в метку, а виджет-редактор планировал бы для удаления.
Записан
Юра.
kdm
Гость
Re: Метка с возможностью редактирования как QLineEdit
«
Ответ #4 :
Июль 10, 2010, 20:58 »
Спасибо вам
Записан
vinnitu
Гость
Re: Метка с возможностью редактирования как QLineEdit
«
Ответ #5 :
Август 06, 2010, 16:07 »
Цитата: kdm от Июль 10, 2010, 15:26
И если кто знает, как сделать, чтобы если строка не входит из-за ограничения длины виджета, отображалось бы три точки в конце строки?
ага, давайте усложним - ограничение длины и
высоты
виджета, т.е. если влазит 2 строки, то округлять только вторую
Записан
DarkHobbit
Самовар
Offline
Сообщений: 194
Re: Метка с возможностью редактирования как QLineEdit
«
Ответ #6 :
Октябрь 23, 2016, 09:25 »
Цитата: Павлик от Июль 10, 2010, 17:01
1. Вообще, есть
void QLabel::setTextInteractionFlags( Qt::TextInteractionFlags flags )
А кто-нибудь знает, как воспользоваться результатами такого редактирования?
Я вот тоже выставил этот флаг (простота редактирования "по месту" подкупила), да, текст редактируется, но потом после редактирования вызываю QLabel::text(), он возвращает старое значение.
Проверено на версиях Qt от 4.6 до 5.6.
«
Последнее редактирование: Октябрь 23, 2016, 21:37 от DarkHobbit
»
Записан
Мои проекты на Qt:
DoubleContact
,
LInvert
Day
Частый гость
Offline
Сообщений: 290
Re: Метка с возможностью редактирования как QLineEdit
«
Ответ #7 :
Октябрь 24, 2016, 19:02 »
Цитата: DarkHobbit от Октябрь 23, 2016, 09:25
но потом после редактирования вызываю QLabel::text(), он возвращает старое значение
Очень интересно! А вы не пробовали свернуть - развернуть окно? Не появится ли старое значение?
Записан
DarkHobbit
Самовар
Offline
Сообщений: 194
Re: Метка с возможностью редактирования как QLineEdit
«
Ответ #8 :
Октябрь 26, 2016, 22:40 »
Цитата: Day от Октябрь 24, 2016, 19:02
А вы не пробовали свернуть - развернуть окно? Не появится ли старое значение?
Свернуть-развернуть не пробовал, это наследник от QDialog, у него сворачивание-разворачивание по умолчанию отключено. А вот ресайз делал. Нет, не появляется.
А на что этот вопрос наводит? Вы хотите сказать, что чтобы новое значение сохранилось, пользователь должен ещё что-то нажать? И если да, то что?
Записан
Мои проекты на Qt:
DoubleContact
,
LInvert
gil9red
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1805
Re: Метка с возможностью редактирования как QLineEdit
«
Ответ #9 :
Октябрь 26, 2016, 22:50 »
Может, проще использовать QLineEdit/QTextEdit без рамки?
Записан
https://github.com/gil9red
https://ru.stackoverflow.com/users/201445/gil9red
DarkHobbit
Самовар
Offline
Сообщений: 194
Re: Метка с возможностью редактирования как QLineEdit
«
Ответ #10 :
Октябрь 26, 2016, 23:03 »
Цитата: gil9red от Октябрь 26, 2016, 22:50
Может, проще использовать QLineEdit/QTextEdit без рамки?
Я уже пришёл к мысли, что для пользователя даже лучше, если он будет с рамкой. Собственно, в моём случае задача была такая, что отображается либо текстовый URL, либо изображение (vCard-тег PHOTO из RFC 2426, если интересно). Вот и хотелось их отображать поочерёдно на одном компоненте. Но сейчас поигрался с прототипом и думаю, что отображать-то их можно, а вот редактировать текст всё равно лучше отдельным виджетом, поскольку 70-90% пользователей всё равно не догадаются без подсказки, что эту метку ещё и редактировать можно.
Так что актуальность реализации именно через QLabel лично для меня уже не такая высокая. Но для порядку разобраться в проблеме хотелось бы - вдруг ещё где пригодится...
«
Последнее редактирование: Октябрь 26, 2016, 23:05 от DarkHobbit
»
Записан
Мои проекты на Qt:
DoubleContact
,
LInvert
Страниц: [
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...