Qt图形编程基础之:Qt/Embedded开发入门
可用于创建用户界面的可视元素。按钮、菜单、滚动条、消息框和应用程序窗口都是窗口部件的实例。因为所有的窗口部件既是控件又是容器,因此Qt的窗口部件不能任意地分为控件和容器。通过子类化已存在的Qt部件或少数时候必要的全新创建,自定义的窗口部件能很容易地创建出来。
窗口部件是QWidget或其子类的实例,用户自定义的窗口通过子类化得到,如图12.3所示。
图12.3源自QWidget的类层次结构
一个窗口部件可包含任意数量的子部件。子部件在父部件的区域内显示。没有父部件的部件是顶级部件(比如一个窗口),通常在桌面的任务栏上有它们的入口。Qt不在窗口部件上施加任何限制。任何部件都可以是顶级部件,任何部件都可以是其他部件的子部件。通过自动或手动(如果你喜欢)使用布局管理器可以设定子部件在父部件区域中的位置。如果父部件被停用、隐藏或删除,则同样的动作会应用于它的所有子部件。
1.Hello窗口实例
下面是一个显示“HelloQt/Embedded!”的程序的完整代码:
#includeqapplication.h>
#includeqlabel.h>
intmain(intargc,char**argv)
{
QApplicationapp(argc,argv);
QLabel*hello=newQLabel
(FONTcolor=blue>Helloi>QtEmbedded!/i>/FONT>,0);
app.setMainWidget(hello);
hello->show();
returnapp.exec();
}
2.常见通用窗口组合
Qt中还有一些常见的通用窗口,它们使用了Windows风格显示,图12.5、12.6、12.7、12.8分别描述了常见的一些通用窗口的组合使用。图12.4是该Hello窗口的运行效果图:
图12.4 Hello窗口运行效果图 图12.5 使用QHBox排列一个标签和一个按钮
图12.6 使用了QButtonGroup的两个单选框和两个复选框 图12.7 QGroupBox组合图示
图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();
}
12.2.5Qt/Embedded图形界面编程
Qt提供了所有可能的类和函数来创建GUI程序。Qt既可用来创建“主窗口”式的程序,即一个有菜单栏,工具栏和状态栏作为环绕的中心区域;也可以用来创建“对话框”式的程序,使用按钮和必要的选项卡来呈现选项与信息。Qt支持SDI(单文档界面)和MDI(多文档界面)。Qt还支持拖动、放下和剪贴板。工具栏可以在工具栏区域内移动,拖拽到其他区域或者作为工具托盘浮动起来。这个
Qt图形编程 Qt Embedded Linux 操作系统 插槽 相关文章:
- Qt图形编程基础之:嵌入式GUI简介(08-13)
- Qt图形编程基础之:实验内容——使用Qt编写“Hello,World”程序(08-13)
- 《嵌入式Linux应用程序开发标准教程》(第2版)(09-30)
- 基于QTE的嵌入式Linux下可视化打印设计(07-30)
- 嵌入式linux应用开发之:初识Qt(03-04)
- U-Boot的编译与移植到QT-S3C44B0X开发板上(03-08)