Глава 14. Создание элементов графического интерфейса
#i f n d e f QRCLEARABLELINEEDIT_H
#define QRCLEARABLELINEEDIT_H
#include c l a s s QLabel ;
c l a s s I c o n i z e d L i n e E d i t : public QLineEdit
{
Q_OBJECT
public :
//Режимы отображения пиктограммы, которые определяют её поведение
enum I c o n V i s i b i l i t y M o d e {
//Всегда отображать пиктограмму
I c o n A l w a y s V i s i b l e =0 ,
//Отображать пиктограмму после наведения курсора на поле ввода
I c o n V i s i b l e O n H o v e r ,
//Отображать пиктограмму при присутствии текста
I c o n V i s i b l e O n T e x t P r e s e n c e ,
//Отображать пиктограмму при отсутствии текста
IconVisibleOnEmptyText ,
//Всегда прятать пиктограмму
IconAlwaysHidden
} ;
e x p l i c i t I c o n i z e d L i n e E d i t ( QWidget ∗ p a r e n t = 0 ) ;
bool i s I c o n V i s i b l e ( ) const ;
void s e t I c o n P i x m a p ( const QPixmap &pPixmap ) ;
void s e t I c o n T o o l t i p ( const QStri ng &pToolTip ) ;
private :
void u p d a t e I c o n P o s i t i o n A n d S i z e ( ) ;
private :
QLabel ∗ mIconLabel ; //Указатель на метку, которая отображает пиктограмму
} ;
#endif // QRCLEARABLELINEEDIT_H
В конструкторе класса создадим метку mIconLabel с помощью которой мы
будем отображать значок. Также добавим реализацию для нескольких вспомо-
гательных методов.
#include " i c o n i z e d l i n e e d i t . h "
#include #include //Конструктор класса
I c o n i z e d L i n e E d i t : : I c o n i z e d L i n e E d i t ( QWidget ∗ p a r e n t ) : QLineEdit ( p a r e n t )
{
mIconLabel = new QLabel ( t h i s ) ; //Создаём метку для того, чтобы показать пиктограмму
}
//Возвращает true, если пиктограмма видима
bool I c o n i z e d L i n e E d i t : : i s I c o n V i s i b l e ( ) const
{
return mIconLabel
−>i s V i s i b l e ( ) ;
}
//Устанавливает пиктограмму
void I c o n i z e d L i n e E d i t : : s e t I c o n P i x m a p ( const QPixmap &pPixmap )
{
//Устанавливаем пиктограмму для метки
mIconLabel−>setPixmap ( pPixmap ) ;
//Обновляем позицию и размеры
u p d a t e I c o n P o s i t i o n A n d S i z e ( ) ;
}
//Устанавливаем подсказку для пиктограммы
void I c o n i z e d L i n e E d i t : : s e t I c o n T o o l t i p ( const QStri ng &pToolTip )
{
//Подсказка будет видимой после наведения курсора на метку с пиктограммой
mIconLabel−>s e t T o o l T i p ( pToolTip ) ;
}
void I c o n i z e d L i n e E d i t : : u p d a t e I c o n P o s i t i o n A n d S i z e ( )
{
Программирование на языке С++ в среде Qt Creator