Название: Метка с возможностью редактирования как QLineEdit Отправлено: kdm от Июль 10, 2010, 15:26 Дело в том, что надо было реализовать такой виджет, который отображал метку, как QLabel и мог бы быть редактируемым по double click'у, как QLineEdit, и вновь отображаться, как метка QLabel при потере фокуса и нажатию enter.
Я зделал, так, взял на одном виджете и QLabel и QLineEdit и отображаю их по очереди при соотв. событиях. Это оптимально или можно было сделать более виртуозно?:) И если кто знает, как сделать, чтобы если строка не входит из-за ограничения длины виджета, отображалось бы три точки в конце строки? Название: Re: Метка с возможностью редактирования как QLineEdit Отправлено: MoPDoBoPoT от Июль 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 ) Название: Re: Метка с возможностью редактирования как QLineEdit Отправлено: xokc от Июль 10, 2010, 19:44 С помощью qss сделать стиль для QLineEdit , который прячет рамку и т.п. ("превращает QLineEdit в QLabel) и применять его для случаев, когда focused=false.
Название: Re: Метка с возможностью редактирования как QLineEdit Отправлено: lit-uriy от Июль 10, 2010, 19:47 а я бы по аналогии с делегатами в представлениях сделал. Т.е. в нужный момент создавал виджет-редактор помещённый по тем же координатам и с теми же размерами, что и метка. При получении сигнала от виджета-редактора о завершении редактирования, копировал бы данные в метку, а виджет-редактор планировал бы для удаления.
Название: Re: Метка с возможностью редактирования как QLineEdit Отправлено: kdm от Июль 10, 2010, 20:58 Спасибо вам
Название: Re: Метка с возможностью редактирования как QLineEdit Отправлено: vinnitu от Август 06, 2010, 16:07 И если кто знает, как сделать, чтобы если строка не входит из-за ограничения длины виджета, отображалось бы три точки в конце строки? ага, давайте усложним - ограничение длины и высоты виджета, т.е. если влазит 2 строки, то округлять только вторую Название: Re: Метка с возможностью редактирования как QLineEdit Отправлено: DarkHobbit от Октябрь 23, 2016, 09:25 1. Вообще, есть void QLabel::setTextInteractionFlags( Qt::TextInteractionFlags flags ) А кто-нибудь знает, как воспользоваться результатами такого редактирования?Я вот тоже выставил этот флаг (простота редактирования "по месту" подкупила), да, текст редактируется, но потом после редактирования вызываю QLabel::text(), он возвращает старое значение. Проверено на версиях Qt от 4.6 до 5.6. Название: Re: Метка с возможностью редактирования как QLineEdit Отправлено: Day от Октябрь 24, 2016, 19:02 но потом после редактирования вызываю QLabel::text(), он возвращает старое значение Очень интересно! А вы не пробовали свернуть - развернуть окно? Не появится ли старое значение?Название: Re: Метка с возможностью редактирования как QLineEdit Отправлено: DarkHobbit от Октябрь 26, 2016, 22:40 А вы не пробовали свернуть - развернуть окно? Не появится ли старое значение? Свернуть-развернуть не пробовал, это наследник от QDialog, у него сворачивание-разворачивание по умолчанию отключено. А вот ресайз делал. Нет, не появляется.А на что этот вопрос наводит? Вы хотите сказать, что чтобы новое значение сохранилось, пользователь должен ещё что-то нажать? И если да, то что? Название: Re: Метка с возможностью редактирования как QLineEdit Отправлено: gil9red от Октябрь 26, 2016, 22:50 Может, проще использовать QLineEdit/QTextEdit без рамки?
Название: Re: Метка с возможностью редактирования как QLineEdit Отправлено: DarkHobbit от Октябрь 26, 2016, 23:03 Может, проще использовать QLineEdit/QTextEdit без рамки? Я уже пришёл к мысли, что для пользователя даже лучше, если он будет с рамкой. Собственно, в моём случае задача была такая, что отображается либо текстовый URL, либо изображение (vCard-тег PHOTO из RFC 2426, если интересно). Вот и хотелось их отображать поочерёдно на одном компоненте. Но сейчас поигрался с прототипом и думаю, что отображать-то их можно, а вот редактировать текст всё равно лучше отдельным виджетом, поскольку 70-90% пользователей всё равно не догадаются без подсказки, что эту метку ещё и редактировать можно.Так что актуальность реализации именно через QLabel лично для меня уже не такая высокая. Но для порядку разобраться в проблеме хотелось бы - вдруг ещё где пригодится... |