Russian Qt Forum
Сентябрь 30, 2024, 22:30
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Editable label
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Editable label (Прочитано 6207 раз)
Alp
Гость
Editable label
«
:
Сентябрь 14, 2010, 16:30 »
Надо сделать такую штуку - лейбл, при двойном клике появляется QLineEdit в котором происходит редактирование текста с лейбла. По определенным событиям редактор пропадает, текст в лейбле обновляется.
События, по которым закрывается редактор:
- клик мышью вне области редактора (текст в лейбле обновляется)
- Key_Return (текст в лейбле обновляется)
- Key_Escape (в этом случае текст в лейбле остается старый).
Столкнулся при реализации этой простой задачи с рядом проблем:
1. Для отслеживания клика мышью вызываю у редактора grabMouse, в котором проверяю принадлежность координаты прямоугольнику редактора и делаю вывод о том где кликнул пользователь. Проблема в том, что после вызова grabMouse я ни разу не попадаю в mousePressEvent, более того, подвисает приложение и система до нажатия виндовых шоткатов (типа Ctrl-Escape или Win), т.е. до принудительного отбирания фокуса у приложения. По результатам в консоли отладки видно, что все клики происходившие за время "повисания" отображены, хотя и неизвестно когда обработаны.
2. У QLineEdit есть поганая привычка - добавлять марджины. Если присмотреться к редактору, то видно, что текст не прилипает к рамке, а отсутпает от нее по всем границам. Мне же хочется этим управлять (иначе получается, что при вызове редактора текст "съезжает" вниз-вправо, относительно лейбла). Можо ли это сделать малой кровью?
3. Можно ли вообще отказаться от идеи QLineEdit и обновлять влаги взаимодействия с текстом (даэе как-то это получилось сделать), при этом получая "редактируемый" текст в лейбле? Т.е. лейб в режимередактирования все-равно возвращает свой изначальный текст при вызове text(). Мне же надо получить обновленный.
Записан
Alp
Гость
Re: Editable label
«
Ответ #1 :
Сентябрь 14, 2010, 16:57 »
тестовый проект
Записан
merke
Гость
Re: Editable label
«
Ответ #2 :
Сентябрь 14, 2010, 17:47 »
Вместо лэйбла используй QLineEdit, задай ему соответствующий стайлшит и получится лэбл. Такая тема уже обсуждалась на форуме, поищи.
Записан
merke
Гость
Re: Editable label
«
Ответ #3 :
Сентябрь 14, 2010, 17:49 »
Вот здесь большой пример использования QEvent -
http://qt.ucoz.net/publ/primery_ispolzovanija_klassa_qevent/1-1-0-17
Почитай, я уверен, ты там черпнешь много полезного для решения твоей задачи.
Записан
Alp
Гость
Re: Editable label
«
Ответ #4 :
Сентябрь 14, 2010, 18:39 »
Цитата: Александр от Сентябрь 14, 2010, 17:47
Вместо лэйбла используй QLineEdit, задай ему соответствующий стайлшит и получится лэбл. Такая тема уже обсуждалась на форуме, поищи.
Это плохой, негодный вариант. У QLineEdit нельзя запретить выделение и его нельзя сделать "прозрачным". Т.е. когда лежит QLabel на виджете нет нужды думать о том, какой у него цвет. Здесь же надо постоянно обновлять стайлшит если родительский виджет изменил свой цвет.
Насчет QEvent, если честно, не понял с какого боку он может помочь в решении моей задачи? Как обрабатываются эвенты я и так знаю, вопрос в том почему при grabMouse происходят странности.
Записан
Drafter
Гость
Re: Editable label
«
Ответ #5 :
Сентябрь 14, 2010, 23:02 »
Цитировать
У QLineEdit нельзя запретить выделение и его нельзя сделать "прозрачным".
Попробуйте проявлять больше настойчивости (усидчивости), прежде чем утверждать, что де сделать ничего нельзя. Прозрачность, например, установить очень просто (включите в стиль виджета - "background-color: rgba(0, 0, 0, 0);"). Так же наверняка есть возможность запретить выделение. Просто вы не пытались найти решение
.
Записан
Alp
Гость
Re: Editable label
«
Ответ #6 :
Сентябрь 15, 2010, 13:12 »
Да, чего-то я поторопился, спасибо за идею.
Записан
SASA
Гость
Re: Editable label
«
Ответ #7 :
Сентябрь 15, 2010, 17:10 »
Можно посмотреть реализацию в Ку Те Дизайнере. Там, прям на форме можно редактировать надписи на кнопках, лейблах.
Записан
Marat(Qt)
Гость
Re: Editable label
«
Ответ #8 :
Сентябрь 22, 2010, 17:36 »
margin'ы тоже в stylesheet можно указать
Записан
Страниц: [
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...