Qt圖形編程基礎(chǔ)之:Qt/Embedded開發(fā)入門
圖12.8使用了QGroupBox進(jìn)行排列的日期類QDateTimeEdit、一個(gè)行編輯框類QLine-
Edit、一個(gè)文本編輯類QTextEdit和一個(gè)組合框類QComboBox。
圖12.9是以QGrid排列的一個(gè)QDial、一個(gè)QProgressBar、一個(gè)QSpinBox、一個(gè)QScrollBar、一個(gè)QLCDNumber和一個(gè)QSlider。
圖12.10是以QGrid排列的一個(gè)QIconView、一個(gè)QListView、一個(gè)QListBox和一個(gè)QTable。
圖12.8 QGrid組合圖示1 圖12.9 QGrid組合圖示2 圖12.10鐘表部件圖示
3.自定義窗口
開發(fā)者可以通過子類化QWidget或它的一個(gè)子類創(chuàng)建他們自己的部件或?qū)υ捒?。為了舉例說明子類化,下面提供了數(shù)字鐘部件的完整代碼。
鐘表部件是一個(gè)能顯示當(dāng)前時(shí)間并自動(dòng)更新的LCD。一個(gè)冒號(hào)分隔符隨秒數(shù)的流逝而閃爍,如圖12.10所示。
Clock從QLCDNumber部件繼承了LCD功能。它有一個(gè)典型部件類所擁有的典型構(gòu)造函數(shù),帶有可選的parent和name參數(shù)(如果設(shè)置了name參數(shù),測試和調(diào)試會(huì)更容易)。系統(tǒng)有規(guī)律地調(diào)用從QObject繼承的timerEvent()函數(shù)。
它在clock.h中定義如下所示:
#includeqlcdnumber.h>
classClock:publicQLCDNumber
{
public:
Clock(QWidget*parent=0,constchar*name=0);
protected:
voidtimerEvent(QTimerEvent*event);
private:
voidshowTime();
boolshowingColon;
};
構(gòu)造函數(shù)showTime()是用當(dāng)前時(shí)間初始化鐘表,并且告訴系統(tǒng)每1000ms調(diào)用一次timerEvent()來刷新LCD的顯示。在showTime()中,通過調(diào)用QLCDNumber::display()來顯示當(dāng)前時(shí)間。每次調(diào)用showTime()來讓冒號(hào)閃爍時(shí),冒號(hào)就被空白代替。
clock.cpp的源碼如下所示:
#includeqdatetime.h>
#includeclock.h
Clock::Clock(QWidget*parent,constchar*name)
:QLCDNumber(parent,name),showingColon(true)
{
showTime();
startTimer(1000);
}
voidClock::timerEvent(QTimerEvent*)
{
showTime();
}
voidClock::showTime()
{
QStringtimer=QTime::currentTime().toString().left(5);
if(!showingColon)
{
time[2]='';
}
display(time);
showingColon=!showingColon;
}
文件clock.h和clock.cpp完整地聲明并實(shí)現(xiàn)了Clock部件。
#includeqapplication.h>
#includeclock.h
intmain(intargc,char**argv)
{
QApplicationapp(argc,argv);
Clock*clock=newClock;
app.setMainWidget(clock);
clock->show();
returnapp.exec();
}
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)linux相關(guān)文章:linux教程
評(píng)論