Alt linux Программирование на языке С++ в среде Qt Creator Е. Р. Алексеев, Г. Г. Злобин, Д. А. Костюк, О. В. Чеснокова, А. С. Чмыхало Москва alt linux 2015



Download 5,27 Mb.
Pdf ko'rish
bet173/193
Sana24.02.2022
Hajmi5,27 Mb.
#227496
1   ...   169   170   171   172   173   174   175   176   ...   193
Bog'liq
Book-qtC


Глава 14. Создание элементов графического интерфейса
Добавим к файлу iconizedlineedit.cpp реализацию для этих методов.
//Устанавливает режим отображения для пиктограммы
void I c o n i z e d L i n e E d i t : : s e t I c o n V i s i b i l i t y ( I c o n V i s i b i l i t y M o d e
p I c o n V i s i b i l i t y M o d e )
{
//Сохранение режима
m I c o n V i s i b i l i t y M o d e = p I c o n V i s i b i l i t y M o d e ;
//Выполняем изменения соответсвенно к установленому значению
switch ( p I c o n V i s i b i l i t y M o d e )
{
case I c o n A l w a y s V i s i b l e :
s e t I c o n V i s i b l e ( true ) ;
break ;
case IconVisibleOnEmptyText :
case 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 :
s l o t T e x t C h a n g e d ( t e x t ( ) ) ;
break ;
defa ult :
s e t I c o n V i s i b l e ( f a l s e ) ;
break ;
}
}
//Реализует реакцию на изменение текста в поле для режимов IconVisibleOnEmptyText
//и IconVisibleOnNotEmptyText
void I c o n i z e d L i n e E d i t : : s l o t T e x t C h a n g e d ( const QStri ng &pText )
{
i f ( IconVisibleOnEmptyText == m I c o n V i s i b i l i t y M o d e )
{
s e t I c o n V i s i b l e ( pText . isEmpty ( ) ) ;
}
e l s e i f ( 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 == m I c o n V i s i b i l i t y M o d e )
{
s e t I c o n V i s i b l e ( ! pText . isEmpty ( ) ) ;
}
}
//Сделать пиктограмму видимой или спрятать
void I c o n i z e d L i n e E d i t : : s e t I c o n V i s i b l e ( bool p I s V i s i b l e )
{
//Показать/скрыть метку с пиктограммой
mIconLabel−>s e t V i s i b l e ( p I s V i s i b l e ) ;
}
Для того, чтобы слот slotTextChanged(QString) работал, добавим в кон-
структор сигнально-слотовое соединение. Также добавим начальную инициали-
зацию для поля mIconVisibilityMode.
//Конструктор класса
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 ) ,
m 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 ) //Инициализация
{
mIconLabel = new QLabel ( t h i s ) ; //Создаём метку для того, чтобы показать пиктограмму
//Обработка изменения текста в поле
c o n n e c t ( this , SIGNAL( textChanged ( QString ) ) , this , SLOT( slotTextChanged (
Q S t r i n g ) ) , Qt : : UniqueConnection ) ;
}
Чтобы использовать наш виджет в программе, добавим файл описания класса
и создадим несколько экземпляров, которые разместим на форме. Ответствен-
ным за создание интерфейса окна будет отдельный метод createUi().
В файле описания класса главного окна напишем:
#include 
c l a s s I c o n i z e d L i n e E d i t ;
c l a s s MainWindow : public QWidget
Программирование на языке С++ в среде Qt Creator


14.1. Класс QObject
379
{
Q_OBJECT
public :
e x p l i c i t MainWindow ( QWidget ∗ p a r e n t = 0 ) ;
private :
void c r e a t e U i ( ) ;
private :
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 ;
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 _ 2 ;
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 _ 3 ;
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 _ 4 ;
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 _ 5 ;
} ;
В файле реализации главного окна разместим код:
#include " m a i n w i n d o w . h "
#include " i c o n i z e d l i n e e d i t . h "
#include 
MainWindow : : MainWindow ( QWidget ∗ p a r e n t ) :
QWidget ( p a r e n t )
{
c r e a t e U i ( ) ;
}
void MainWindow : : c r e a t e U i ( )
{
QVBoxLayout ∗ lMainLayout = new QVBoxLayout ;
s e t L a y o u t ( lMainLayout ) ;
i c o n i z e d L i n e E d i t = new 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 −>s e t P l a c e h o l d e r T e x t ( " C l i c k to o p e n f i l e " ) ;
i c o n i z e d L i n e E d i t −>setIconPixmap ( QPixmap ( " F o l d e r . png " ) ) ;
i c o n i z e d L i n e E d i t −>s e t I c o n V i s i b i l i t y ( I c o n i z e d L i n e E d i t : : I c o n A l w a y s V i s i b l e ) ;
lMainLayout−>addWidget ( 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 _ 2 = new 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 _ 2 −>s e t P l a c e h o l d e r T e x t ( " E n t e r IP a d d r e s s " ) ;
i c o n i z e d L i n e E d i t _ 2 −>setIconPixmap ( QPixmap ( " C h e c k m a r k . png " ) ) ;
i c o n i z e d L i n e E d i t _ 2 −>s e t I c o n V i s i b i l i t y ( I c o n i z e d L i n e E d i t : : I c o n A l w a y s V i s i b l e ) ;
lMainLayout−>addWidget ( i c o n i z e d L i n e E d i t _ 2 ) ;
i c o n i z e d L i n e E d i t _ 3 = new 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 _ 3 −>s e t P l a c e h o l d e r T e x t ( " " ) ;
i c o n i z e d L i n e E d i t _ 3 −>setIconPixmap ( QPixmap ( " Q u e s t i o n s . png " ) ) ;
i c o n i z e d L i n e E d i t _ 3 −>s e t I c o n V i s i b i l i t y ( I c o n i z e d L i n e E d i t : :
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 ) ;
lMainLayout−>addWidget ( i c o n i z e d L i n e E d i t _ 3 ) ;
i c o n i z e d L i n e E d i t _ 4 = new 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 _ 4 −>s e t P l a c e h o l d e r T e x t ( " C a n n o t be e m p t y ... " ) ;
i c o n i z e d L i n e E d i t _ 4 −>setIconPixmap ( QPixmap ( " W a r n i n g . png " ) ) ;
i c o n i z e d L i n e E d i t _ 4 −>s e t I c o n V i s i b i l i t y ( I c o n i z e d L i n e E d i t : :
IconVisibleOnEmptyText ) ;
lMainLayout−>addWidget ( i c o n i z e d L i n e E d i t _ 4 ) ;
i c o n i z e d L i n e E d i t _ 5 = new 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 _ 5 −>s e t P l a c e h o l d e r T e x t ( " C l e a r a b l e " ) ;
i c o n i z e d L i n e E d i t _ 5 −>setIconPixmap ( QPixmap ( " X . png " ) ) ;
i c o n i z e d L i n e E d i t _ 5 −>s e t I c o n V i s i b i l i t y ( I c o n i z e d L i n e E d i t : :
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 ) ;
lMainLayout−>addWidget ( i c o n i z e d L i n e E d i t _ 5 ) ;
}
Пути к файлам изображений для значков мы передаём в конструктор
QPixmap
. Изображения должны находиться в текущей папке (папке, в которой
расположен файл проекта).
После запуска программы мы увидим главное окно и пять полей с пикто-
граммами. Нашему виджету ещё не хватает нескольких важных возможностей.
Значки не двигаются при изменении размера текстовых полей. Также значок
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В., Чмыхало А. С.


380
Download 5,27 Mb.

Do'stlaringiz bilan baham:
1   ...   169   170   171   172   173   174   175   176   ...   193




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish