![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
flankerr |
![]() ![]()
Сообщение
#1
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 9.1.2008 Пользователь №: 65 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Есть диалог, на нём есть QTextEdit
Содержимое QTextEdit иниализированнол неким текстом ну к примеру "введите текст" Нужно что при попытке ввода текста умолчательное значение сразу стиралось. Частично сделать это получилось. Ловим событие OnSelectChanged() и елси оно сработал впервые то затираем текст setText(""); Но вот если перейти в QTextEdit через табуляцию (без мышки) получается кукишь. Вопрос как бы реализовать эту фишку? У мяен диалог сделан через дизайнер поэтому просьба предлогать варианты без созадние собственного класса наследника от QTextEdit. |
|
|
![]() |
Litkevich Yuriy |
![]()
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Ловим событие OnSelectChanged() незнаю что за событие такое.Вариантов два 1) нарисовать на QTextEdit нужный текст (смотри про QLineEdit подобную тему) 2) Отслеживать сигнал textChanged 3) Отслеживать событие focusInEvent |
|
|
flankerr |
![]()
Сообщение
#3
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 9.1.2008 Пользователь №: 65 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
по спешке вместо сигнала void selectionChanged () написал название своего обработчика этого сигнала. Цитата 2) Отслеживать сигнал textChanged Беда в том что сигнал приходит ПОСЛЕ того как изменился текст Цитата 3) Отслеживать событие focusInEvent Для этого надо делать своего наследника от QTextEdit что в моём случае не возможно. (диалог создан в редакторе и переделовать его руками нет не времени ни желания) Однако елсиьбы была возможность отлсеживание смены фокуса дочерних элементов диалога то это всё бы решило. Но как отловить смену фокуса у дочерних эелементов диалога ??? Сообщение отредактировал flankerr - 4.3.2010, 16:43 |
|
|
MoPDoBoPoT |
![]()
Сообщение
#4
|
Участник ![]() ![]() Группа: Участник Сообщений: 172 Регистрация: 7.5.2009 Из: Москва Пользователь №: 738 Спасибо сказали: 44 раз(а) Репутация: ![]() ![]() ![]() |
Для этого надо делать своего наследника от QTextEdit что в моём случае не возможно. Для этого есть фильтр событий: QObject::eventFilter()+QObject::installEventFilter(). Надо будет обрабатывать QEvent::FocusIn и QEvent::FocusOut (и сделать небольшую проверку, чтобы не затирать пользовательский текст). Кстати, в дизайнере для наследования есть "продвижение своего виджета" (Promote to...) А вообще, 1-ый вариант, предложенный Litkevich Yuriy, самый красивый. |
|
|
flankerr |
![]()
Сообщение
#5
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 9.1.2008 Пользователь №: 65 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
MoPDoBoPoT, Говрю же НЕ хочу делать наследника! Точнее нет такой возможности. Или предлогается фильровать события самого диалога? тогда как? можно подробнее?
Встраивать свой виджет на постоянной основе в список доступных виджетов у меня желания нет. У встроенного в Студию редактора найти "Promote to" не удалось. |
|
|
Litkevich Yuriy |
![]()
Сообщение
#6
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
flankerr |
![]()
Сообщение
#7
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 9.1.2008 Пользователь №: 65 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Сходил, почитал... но слона не вижу...
Там везде речь про класс наследник class authEdit : public QLineEdit |
|
|
MoPDoBoPoT |
![]()
Сообщение
#8
|
Участник ![]() ![]() Группа: Участник Сообщений: 172 Регистрация: 7.5.2009 Из: Москва Пользователь №: 738 Спасибо сказали: 44 раз(а) Репутация: ![]() ![]() ![]() |
Сходил, почитал... но слона не вижу... Первый же ответ на вопрос (пост ViGOur'а). MoPDoBoPoT, Говрю же НЕ хочу делать наследника! Ну так связка QObject::eventFilter()+QObject::installEventFilter() не требует наследника (почитай ассистента, да и на форумах много про это писалось) |
|
|
flankerr |
![]()
Сообщение
#9
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 9.1.2008 Пользователь №: 65 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
MoPDoBoPoT, слона точно не увидел... но дёргать у диалога paintEvent(QPaintEvent *) это очень не краисвый вариант для этой цели. Не. Не покатит.
На счёт фильтров на солкьо я понял надо у диалога переопределить eventFilter(QObject *obj, QEvent *event) так чтоли ? И дёргать на каждый чих.. эээ... Хрен редьки не слаще. Но похоже другого варианта нет. Попробую через это. Плин ну чего проще просто узнать что изменился фокус ввода - а не могу найти такогог сообшения... Сообщение отредактировал flankerr - 4.3.2010, 18:10 |
|
|
kwisp |
![]()
Сообщение
#10
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
flankerr,
ну не хочешь красиво напиши костыль. Цитата void QTextEdit::textChanged () [signal] This signal is emitted whenever the document's content changes; for example, when text is inserted or deleted, or when formatting is applied.
Сообщение отредактировал kwisp - 4.3.2010, 18:18 |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 22.6.2025, 21:13 |