crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> QLineEdit, как сделать так, чтобы пока он пуст там появлялся текст?
entmobile
  опции профиля:
сообщение 4.2.2009, 10:11
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 8.12.2008
Пользователь №: 444

Спасибо сказали: 0 раз(а)




Репутация:   0  


Вопрос по lineEdit: как узнать когда он в фокусе а когда нет? Пытался написать свое класс на основе QLineEdit и из focusEventов емитеть сигнал, нечего не получилось!:( Может есть более корректное решение? В итоге мне надо сделать следующее: если LineEdit пуст там появляется текст, при клике(табуляции) туда текст исчезает :)))

#include <QLineEdit>
#include <QFocusEvent>

class authEdit : public QLineEdit
{
Q_OBJECT
public:
    authEdit(QWidget *parent = 0);

signals:
    void onEnterEvent();
    void onLeaveEvent();


protected:
    bool enterFlag;
    void focusInEvent (QFocusEvent *event );
    void focusOutEvent ( QFocusEvent *event);
};


#include "authedit.h"

authEdit::authEdit(QWidget *parent)
        : QLineEdit (parent)
{
    enterFlag=false;
}

void authEdit::focusInEvent (QFocusEvent *event )
{
   if (!enterFlag) {
       emit onEnterEvent();
       enterFlag=true;
   }
}

void authEdit::focusOutEvent ( QFocusEvent *event)
{
    if (enterFlag) {
        emit onLeaveEvent();
        enterFlag=false;
    }
}


Сообщение отредактировал Litkevich Yuriy - 11.2.2009, 20:00
Причина редактирования: Уточнил название темы
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
ViGOur
  опции профиля:
сообщение 4.2.2009, 11:06
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Я думаю лучше это делать в paintEvent, примерно так:
void CMyClass::paintEvent(QPaintEvent *)
{
    if( !pEdit->hasFocus() && pEdit->text().isEmpty())
    {
         QPainter painter( pEdit);
         painter.setPen(Qt::gray);
         painter.setFont(QFont("Arial", 12));
         painter.drawText(pEdit->rect(), Qt::AlignCenter, "Введите текст");
    }
}


Сообщение отредактировал ViGOur - 4.2.2009, 11:06
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- entmobile   QLineEdit, как сделать так, чтобы пока он пуст там появлялся текст?   4.2.2009, 10:11
- - ViGOur   Я думаю лучше это делать в paintEvent, примерно та...   4.2.2009, 11:06
|- - entmobile   Цитата(ViGOur @ 4.2.2009, 12:06) Я думаю ...   4.2.2009, 14:02
- - Tonal   focusInEvent, focusOutEvent. Оно?   4.2.2009, 11:17
- - Litkevich Yuriy   entmobile, в обработчиках событий можно просто уст...   4.2.2009, 11:40
- - SABROG   Цитата(ViGOur @ 4.2.2009, 11:06) Я думаю ...   4.2.2009, 11:41
- - kuler   hasFocus не пробовал?   4.2.2009, 11:45
- - Litkevich Yuriy   Цитата(SABROG @ 4.2.2009, 14:41) Отрисовк...   4.2.2009, 11:53
- - SABROG   Цитата(Litkevich Yuriy @ 4.2.2009, 11:53)...   4.2.2009, 11:59
- - Litkevich Yuriy   Цитата(SABROG @ 4.2.2009, 14:59) то это ч...   4.2.2009, 12:18
- - kuler   а почему focusInEvent, focusOutEvent не устроил?   4.2.2009, 12:32
- - ViGOur   Цитата(SABROG @ 4.2.2009, 11:41) Отрисовк...   4.2.2009, 13:13
|- - entmobile   Цитата(SABROG @ 4.2.2009, 11:41) Чем хоро...   4.2.2009, 13:25
- - Litkevich Yuriy   Цитата(entmobile @ 4.2.2009, 17:02) Вот н...   4.2.2009, 14:32
|- - trdm   Цитата(Litkevich Yuriy @ 4.2.2009, 14:32)...   4.2.2009, 16:04
|- - Sokoloff   Цитата(Litkevich Yuriy @ 4.2.2009, 14:32)...   26.3.2010, 13:17
- - kuler   Цитата(entmobile @ 4.2.2009, 13:25) Но ес...   4.2.2009, 15:26
- - Litkevich Yuriy   kuler, он так и сделал   4.2.2009, 15:30
- - Litkevich Yuriy   может быть, я с рисованием еще не работал. Так на ...   4.2.2009, 16:45
- - Константин   всё это уже есть в SearchLineEdit - в доп.компонен...   16.2.2009, 2:38
|- - z0D5e8n7x   Цитата(Константин @ 16.2.2009, 2:38) всё ...   23.3.2010, 1:05
|- - z0D5e8n7x   а блин, куча косяков Раскрывающийся текст #ifndef...   23.3.2010, 3:49
|- - z0D5e8n7x   чет у меня все криво и косо (( опять поправил - h...   30.3.2010, 18:19
- - novichkov   А можно просто подождать Qt 4.7 Там у QLineEdi...   25.3.2010, 20:46
- - Litkevich Yuriy   Цитата(Sokoloff @ 26.3.2010, 16:17) А чем...   26.3.2010, 13:24
- - KuZ   Вот возможно так: CODEclass LE : public QLineEdit ...   26.3.2010, 19:02
- - SABROG   В Qt 4.7 должен появится метод setPlaceholderText....   27.3.2010, 3:46


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.4.2024, 15:43