QLineEdit, как сделать так, чтобы пока он пуст там появлялся текст? |
Здравствуйте, гость ( Вход | Регистрация )
QLineEdit, как сделать так, чтобы пока он пуст там появлялся текст? |
z0D5e8n7x |
23.3.2010, 3:49
Сообщение
#21
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 23.3.2010 Пользователь №: 1554 Спасибо сказали: 0 раз(а) Репутация: 0 |
а блин, куча косяков
Раскрывающийся текст
|
|
|
novichkov |
25.3.2010, 20:46
Сообщение
#22
|
Студент Группа: Участник Сообщений: 64 Регистрация: 20.3.2008 Из: Северодвинск Пользователь №: 128 Спасибо сказали: 6 раз(а) Репутация: 1 |
А можно просто подождать Qt 4.7 Там у QLineEdit есть property placeholderText. Этот код уже есть в исходных текстах SDK Qt 4.6 windows.
|
|
|
Sokoloff |
26.3.2010, 13:17
Сообщение
#23
|
Участник Группа: Участник Сообщений: 237 Регистрация: 1.4.2009 Из: Москва Пользователь №: 654 Спасибо сказали: 50 раз(а) Репутация: 11 |
Вот немного поправил твой вариант!!! Спасибо огромное!! Эдик предлагал использовать событие перерисовки родительского виджета, и это более удачный вариант чем твой |
|
|
Litkevich Yuriy |
26.3.2010, 13:24
Сообщение
#24
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
KuZ |
26.3.2010, 19:02
Сообщение
#25
|
Студент Группа: Новичок Сообщений: 12 Регистрация: 13.12.2009 Пользователь №: 1303 Спасибо сказали: 0 раз(а) Репутация: 0 |
Вот возможно так:
CODE class LE : public QLineEdit { public: LE(QWidget *wgt = 0); protected: virtual void focusInEvent(QFocusEvent *); virtual void focusOutEvent(QFocusEvent *); }; CODE LE::LE(QWidget *wgt) : QLineEdit(wgt){} void LE::focusInEvent(QFocusEvent *e) { QLineEdit::focusInEvent(e); QPalette p = palette(); p.setColor(QPalette::Text,Qt::black); setPalette(p); setText(text() == "Enter Text" ? "" : text()); } void LE::focusOutEvent(QFocusEvent *e) { QLineEdit::focusOutEvent(e); QPalette p = palette(); p.setColor(QPalette::Text,Qt::gray); setPalette(p); setText(text().isEmpty() ? "Enter Text" : text()); } только если набраный текст Enter Text, то "ошибка" чето придумать можно чтоб подобный вариант работал. |
|
|
SABROG |
27.3.2010, 3:46
Сообщение
#26
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
В Qt 4.7 должен появится метод setPlaceholderText. В Qt 4.6 он уже реализован, но не доступен. Видимо тролли нас хотят удивить, ну или еще не все отладили. Метод работает, но достучаться можно только через хак:
|
|
|
z0D5e8n7x |
30.3.2010, 18:19
Сообщение
#27
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 23.3.2010 Пользователь №: 1554 Спасибо сказали: 0 раз(а) Репутация: 0 |
чет у меня все криво и косо ((
опять поправил - http://z0d5e8n7x.ru/blog/2010/03/24/qlineedit-v-stile-web/ |
|
|
Текстовая версия | Сейчас: 27.11.2024, 4:15 |