Qt图形编程基础之:Qt/Embedded开发入门
图12.8使用了QGroupBox进行排列的日期类QDateTimeEdit、一个行编辑框类QLine-
Edit、一个文本编辑类QTextEdit和一个组合框类QComboBox。
图12.9是以QGrid排列的一个QDial、一个QProgressBar、一个QSpinBox、一个QScrollBar、一个QLCDNumber和一个QSlider。
图12.10是以QGrid排列的一个QIconView、一个QListView、一个QListBox和一个QTable。
图12.8 QGrid组合图示1 图12.9 QGrid组合图示2 图12.10钟表部件图示
3.自定义窗口
开发者可以通过子类化QWidget或它的一个子类创建他们自己的部件或对话框。为了举例说明子类化,下面提供了数字钟部件的完整代码。
钟表部件是一个能显示当前时间并自动更新的LCD。一个冒号分隔符随秒数的流逝而闪烁,如图12.10所示。
Clock从QLCDNumber部件继承了LCD功能。它有一个典型部件类所拥有的典型构造函数,带有可选的parent和name参数(如果设置了name参数,测试和调试会更容易)。系统有规律地调用从QObject继承的timerEvent()函数。
它在clock.h中定义如下所示:
#includeqlcdnumber.h>
classClock:publicQLCDNumber
{
public:
Clock(QWidget*parent=0,constchar*name=0);
protected:
voidtimerEvent(QTimerEvent*event);
private:
voidshowTime();
boolshowingColon;
};
构造函数showTime()是用当前时间初始化钟表,并且告诉系统每1000ms调用一次timerEvent()来刷新LCD的显示。在showTime()中,通过调用QLCDNumber::display()来显示当前时间。每次调用showTime()来让冒号闪烁时,冒号就被空白代替。
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完整地声明并实现了Clock部件。
#includeqapplication.h>
#includeclock.h
intmain(intargc,char**argv)
{
QApplicationapp(argc,argv);
Clock*clock=newClock;
app.setMainWidget(clock);
clock->show();
returnapp.exec();
}
linux操作系统文章专题:linux操作系统详解(linux不再难懂)linux相关文章:linux教程
评论