当前位置:首页 >> IT/计算机 >>

Qt嵌入式系统--Qt图形界面应用程序开发


2010年10月29日星期五

Neusoft Institute of Information

嵌入式系统
大连东软信息学院 嵌入式系统导论课程组
2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

第6章 Qt图形界面应用程序开发
? ? ? ? 6.1 6.2 6.3 6.4 Qt简介 Qt4 Designer的应用 Qt4与数据库 Qt/Embedded

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

6.1 Qt简介
? ? ? ? ? ? ? 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.1.6 6.1.7 Qt的介绍 Qt中主要的类 信号和槽 Qt的帮助文档 Qt4的特点和优势 Qt4的安装与配置 Qt4程序结构及示例

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

6.1.1 Qt的简介

Qt是挪威Trolltech公司出品的一个跨平台的C++图形用户界面库。 Trolltech公司目前开发两种产品: 一种是跨平台的图形界面设计平台,即Qt。 一种是提供给嵌入式系统的应用程序开发平台,可以应用到PDA,手 机等手持设备上,即Qtopia,是基于FrameBuffer的Qt/Embedded

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

Trolltech的双重授权模式
? Trolltech公司提供两种授权模式,一种用于商业性质的 授权,一种用于免费的开源授权

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

6.1.1 Qt的简介
Qt 同 X Window 上的Motif,Openwin,GTK 等图形界面库, 和Windows 平台上的 MFC,OWL,VCL,ATL 是同类型的东西, 但是 Qt 具有很多优点。 (1)Qt有优良的跨平台性,可支持的操作系统有。 (2)Unix、Linux、Solaris、SunOS等X11平台; (3)Windows 95、Windows 98、WindowsNT 4.0、Windows 2000、Windows XP; (4)Mac OSX、HP-UX、QNX、FressBSD等; (5)MIPS、ARM、StrongARM、Motorola 68000、PowerPC和 XScale等支持FrameBuffer的嵌入式处理器上。

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

Qt特征(一)
? 面向对象
Qt具有模块设计和注重软件构件或元素的可重用性的特点

? 构件支持
Qt提供信号(signal)和插槽(slot)概念,并支持对象 之间在彼此不知道对方信息的情况下进行合作,这使得Qt非 常适合于真正的构件编程

? 友好的联机帮助
Qt提供了大量的联机参考文档,有超文本HTML方式,也有 Unix帮助页man手册页和补充说明。对于初学者,其中的指 南将一步步介绍如何进行Qt编程

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

Qt特征(二)
? 便利性
由于Qt是一种跨平台的GUI工具包,它对编程者隐藏了在处理 不同窗口系统时潜在的问题,Qt定义了一些类来隐藏在不同操 作系统上不同处理方式下的细节问题

? 国际化
Qt为本地化应用提供了完全的支持,所有用户界面文本都可以 基于消息翻译表被翻译成各国语言,Qt还支持双字节16bit国 际字符标准

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

Qt特征(三)
? 丰富的API函数
Qt为专业应用提供了大量的函数,在Qt的API中含有大约250 个C++类,大多数的类都是GUI专有的

? 可用户化外观
Qt支持主题,基于Qt的应用程序能够在Windows外观、Motif 外观,以及其它一些用户化外观主题之间切换

? 完整的一套组件工具
Qt编程的基本模块称之为组件,组件是用户界面的组成部分, Qt含有用来创建专业外观的用户界面所需要的所有组件

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

6.1.2 Qt中主要的类
1. QObject

QObject类是所有能够处理signal、slot和事件的Qt对象的 基类,原形如下:
QObject::QObject ( QObject * parent =0,const char * name = 0 )

在上面的函数中如果parent为0则构造一个无父的对象,如 果对象是一个组件,则它就会成为顶层的窗口。

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

QObject类(一)
class Mandelbrot:public QObject { Q_OBJECT //需要使用signal和slot 需要使用signal 需要使用signal和 public : Mandelbrot(QObect *parent=0, const char *name); …… public slots: void start(); signals: void done(); private slots: void calculate(); private: QTimer timer; …… }; ;
2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

QObject类(二)
//构造初始化一个Mandelbrot对象 Mandelbrot::Mandelbrot(QObject *parent=0, const char *name) :QObject(parent, name) { connect(&timer,SIGNAL(timeout()),SLOT(calculate())); …… {

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

6.1.2 Qt中主要的类
2. QApplication ? QApplication类负责GUI应用程序的控制流和主要的设置,它包 括主事件循环体,负责处理和调度所有来自窗口系统和其他资 源的事件 ? 处理应用程序的开始、结束以及会话管理。 ? 对于一个应用程序来说,建立此类的对象是必不可少的 ? QApplication是QObject类的子类

2010-10-29 IT Education & Training

2010年10月29日星期五
函数分组 系统设置

Neusoft Institute of Information

desktopSettingsAware()、setDesktopSettingsAware()、cursorFlashTime()、setCursorFlashTime()、doubleClickInterval()、setDoubleClickInterval()、wheelScrollLines()、 setWheelScrollLines()、palette()、setPalette()、font()、setFont()、fontMetrics()。

事件处理

exec()、processEvents()、enter_loop()、exit_loop()、exit()、quit()。 sendEvent()、postEvent()、sendPostedEvents()、removePostedEvents()、hasPendingEvents()、 notify()、macEventFilter()、qwsEventFilter()、x11EventFilter()、x11ProcessEvent()、winEventFilter()。

图形用户 界面风格 颜色使用 文本处理 窗口部件

style()、setStyle()、polish()。

colorSpec()、setColorSpec()、qwsSetCustomColors()。 setDefaultCodec()、installTranslator()、removeTranslator()、translate()。 mainWidget()、setMainWidget()、allWidgets()、topLevelWidgets()、desktop()、activePopupWidget()、activeModalWidget()、clipboard()、focusWidget()、winFocus()、 activeWindow()、widgetAt()。

高级光标处理 X窗口系统同步 对话管理 线程 杂项

hasGlobalMouseTracking()、setGlobalMouseTracking()、overrideCursor()、setOverrideCursor()、restoreOverrideCursor()。 flushX()、syncX()。 isSessionRestored()、sessionId()、commitData()、saveState()。 lock()、unlock()、locked()、tryLock()、wakeUpGuiThread()。 closeAllWindows()、startingUp()、closingDown()、type()。

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

6.1.2 Qt中主要的类
3. QWidget
? QWidget类是所有用户接口对象(组建)的基类,它继承了QObject类的属性 ? 组件是用户界面的单元组成部分,它接收鼠标、键盘和其它从窗口系统来的事 件,并把它自己绘制在屏幕上 ? QWidget类有很多成员函数,但一般不直接使用,而是通过子类继承来使用其 函数功能。如,QPushButton、QlistBox等都是它的子类 ? QWidget是QObject类的子类

2010-10-29 IT Education & Training

2010年10月29日星期五
上下文 窗口函数 顶级窗口 show()、hide()、raise()、lower()、close()。 函数

Neusoft Institute of Information

caption()、setCaption()、icon()、setIcon()、iconText()、setIconText()、isActiveWindow()、setActiveWindow()、showMinimized()、showMaximized()、 showFullScreen()、showNormal()。 update()、repaint()、erase()、scroll()、updateMask()。 pos()、size()、rect()、x()、y()、width()、height()、sizePolicy()、setSizePolicy()、sizeHint()、updateGeometry()、layout()、move()、resize()、setGeometry()、 frameGeometry()、geometry()、childrenRect()、adjustSize()、mapFromGlobal()、mapFromParent()、mapToGlobal()、mapToParent()、maximumSize()、 minimumSize()、sizeIncrement()、setMaximumSize()、setMinimumSize()、setSizeIncrement()、setBaseSize()、setFixedSize()。

窗口内容 几何形状

模式

isVisible()、isVisibleTo()、visibleRect()、isMinimized()、isDesktop()、isEnabled()、isEnabledTo()、isModal()、isPopup()、isTopLevel()、setEnabled()、 hasMouseTracking()、setMouseTracking()、isUpdatesEnabled()、setUpdatesEnabled()。 style()、setStyle()、cursor()、setCursor()、font()、setFont()、palette()、setPalette()、backgroundMode()、setBackgroundMode()、colorGroup()、fontMetrics()、 fontInfo()。 isFocusEnabled()、setFocusPolicy()、focusPolicy()、hasFocus()、setFocus()、clearFocus()、setTabOrder()、setFocusProxy()。 grabMouse()、releaseMouse()、grabKeyboard()、releaseKeyboard()、mouseGrabber()、keyboardGrabber()。 event()、mousePressEvent()、mouseReleaseEvent()、mouseDoubleClickEvent()、mouseMoveEvent()、keyPressEvent()、keyReleaseEvent()、focusInEvent()、 focusOutEvent()、wheelEvent()、enterEvent()、leaveEvent()、paintEvent()、moveEvent()、resizeEvent()、closeEvent()、dragEnterEvent()、dragMoveEvent()、 dragLeaveEvent()、dropEvent()、childEvent()、showEvent()、hideEvent()、customEvent()。

观感

键盘焦点函数 鼠标和键盘捕获 事件处理器

变化处理器 系统函数 这是什么的帮助 内部核心函数

enabledChange()、fontChange()、paletteChange()、styleChange()、windowActivationChange()。 parentWidget()、topLevelWidget()、reparent()、polish()、winId()、find()、metric()。 customWhatsThis()。 focusNextPrevChild()、wmapper()、clearWFlags()、getWFlags()、setWFlags()、testWFlags()。

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

6.1.3 信号和槽
? 信号和槽机制是Qt的一个主要特征,是Qt与其他工具包 最不相同的部分。 在图形用户界面编程中,经常会出现 窗口中的一个部件发生的变化会被通知给另一个部件, 在Qt中采用信号和槽来实现对象部件之间的通信。

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

Signal和Slot的声明(一)

在Qt程序设计中,凡是包含signal和slot的类中都要加上 Q_OBJECT的定义,下面的例子给出了如何在一个类中定义signal和 slot:
class Student : public QObject { Q_OBJECT public: Student() { myMark = 0; } int mark() const { return myMark; } public slots: void setMark(int newMark); signals: void markChanged(int newMark); private: int myMark; };

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

Signal和Slot的声明(二)
signal的发出一般在事件的处理函数中,利用emit 发出signal,在下面的例子中在事件处理结束后发出 signal
void Student::setMark(int newMark) { if (newMark!= myMark) { myMark = newMark; emit markChanged(myMark); } }
2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

Signal和Slot的连接(一)
在signal和slot声明以后,需要使用connect()函数将 它们连接起来。connect()函数属于QObject类的成员函数, 它能够连接signal和slot,也可以用来连接signal和signal 函数原形如下:
bool connect ( const QObject * sender, const char * signal, const QObject * receiver, const char * slot)

其中第一个和第三个参数分别指出signal和slot是属于那个 对象或组件

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

Signal和Slot的连接(二)
在使用connect()函数进行连接的时候,还需要用到 SIGNAL()和SLOT()这两个宏,使用方法如下:
QLabel *label = new QLabel; QScrollBar *scroll = new QScrollBar; QObject::connect( scroll,SIGNAL(valueChanged(int)), label, SLOT(setNum(int)) );

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

Signal和Slot的连接方式(一)

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

Signal和Slot的连接方式(二)
? 同一个信号连接多个插槽
connect(slider, SIGNAL(valueChanged(int)),spinBox, SLOT(setValue(int))); connect(slider,SIGNAL(valueChanged(int)),this, SLOT(updateStatusBarIndicator(int)));

? 多个信号连接到同一个插槽
connect(lcd, SIGNAL(overflow()),this, SLOT(handleMathError())); connect(calculator, SIGNAL(divisionByZero()),this, SLOT(handleMathError()));

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

Signal和Slot的连接方式(三)
? 一个信号连接到另一个信号
connect(lineEdit, SIGNAL(textChanged(const QString &)), this, SIGNAL(updateRecord(const QString &)));

? 取消一个连接
disconnect(lcd,SIGNAL(overflow()),this, SLOT(handleMathError()));

? 取消一个连接不是很常用,因为Qt会在一个对象被删除 后自动取消这个对象所包含的所有的连接

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

6.1.4 Qt的帮助文档

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

6.1.5 Qt4的特点和优势
Qt4较以前的版本,有了较大的改进,具体特点及优势如下: ? Qt4中,所有的头文件(.h)存放位置更规范,按照分类形式,放到 QtCore,QtDBus,QtGui,QtNetwork,QtOpenGL,QtSql等子文件夹下, 而不像之前的版本,所有的头文件都放在一起。 ? Qt4增加了很多新的控件,但是对之前版本中的控件也有保留,只不过在 命名上在类名前面加上Qt3。 ? Qt4中界面的设计与逻辑功能分开,界面设计的头文件中不再包含任何用 户自己写的代码,逻辑功能的实现在用户自己重新定义的类中实现,而这 个重新定义的类是完成界面设计类的继承类。当用QtDesigner修改界面布 局后,只需用uic工具直接生成新的界面头文件覆盖原来的文件即可。

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

6.1.6 Qt4的安装与配置
1. 解压压缩包 [root@localhost home]# tar zxvf qt-x11-opensource-src4.3.2.tar.gz 2. 配置并编译 [root@localhost home]# cd qt-x11-opensource-src-4.3.2 [root@localhost qt-x11-opensource-src-4.3.2]#./configure -no-openssl [root@localhost qt-x11-opensource-src-4.3.2]#gmake

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

6.1.6 Qt4的安装与配置
3.安装库文件 [root@localhost qt-x11-opensource-src-4.3.2]#su [root@localhost qt-x11-opensource-src-4.3.2]#gmake install Qt默认被安装的路径为:/usr/local/Trolltech/Qt-4.3.2。如果安装的时 候需要更改安装的路径,可以加上-prefix 参数来指定安装路径。 4.设置环境变量 如果需要直接用Qt命令,那么需要设置环境变量PATH。具体操作为,如果 你的shell是bash,ksh,zsh或sh,那么在.profile或.bash_profile文件 中加上下面的信息。 PATH=/usr/local/Trolltech/Qt-4.3.2/bin:$PATH export PATH

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

6.1.7 Qt4程序结构及示例
【程序6.5】helloworld.cpp文件内容。 ? #include <QApplication> ? #include <QLabel> ? int main(int argc, char *argv[]) ? { ? QApplication app(argc, argv); ? QLabel *label = new QLabel("<h2><font color=red>Hello</font><i> ? World!</i></h2>"); ? label->show(); ? return app.exec(); ? }
2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

编译及运行
? ? ? ? ? 建立一个文件夹helloworld,把helloworld.cpp放到文件夹下 qmake –project qmake make ./helloworld

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

6.2 Qt4 Designer的应用
? ? ? ? 6.2.1 6.2.2 6.2.3 6.2.4 Qt Designer的应用 Qt中的控件及对话框类 基于Qt Designer程序设计流程 Qt应用程序实例

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

6.2.1 Qt Designer的应用
? Qt提供了非常强大的GUI编辑工具Qt Designer,它的操作界面 类似于Windows下的Visual Studio,而且它还提供了相当多的 部件资源。在编译Qt源码的时候,也同时生成了可执行程序 designer。 ? [root@localhost sunjm]#designer

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

6.2.2 Qt中的控件及对话框类
Qt提供了很多控件和常用的对话框,可以用在很多地方。 ? 主窗口控件:QMenuBar,QToolBar,QStatusBar ? 布局相关的控件:QSplitter,QScrollArea ? 四种方式按钮: QPushButton, QToolButton, QCheckBox,和 QRadioButton ? 容器类控件:QFrame,QToolBox,QLabel。 ? 滚动条:QAbstractScrollArea,是视图类和其他滚动控件的基类。 ? 显示信息的控件:QLabel,QTextBrowser。 ? 数据输入的控件:QLineEdit,QTextEdit。 ? QLineEdit只可输入许可器允许的字符。 ? QTextEdit是QAbstractScrollArea的子类,可以输入多行文本。 ? 程序的进行状态控件:QProgressDialog,QProgressBar。 ? QInputDialog可以方便的让用户输入一行文本或者数字。 ? Qt中还可以自定义控件,并集成到Qt Designer中。

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

6.2.3 基于Qt Designer程序设计流程
1.创建和初始化子部件 2.设置子部件布局 3.设置Tab键次序(不是必须) 4.建立信号与插槽的连接

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

6.2.3 基于Qt Designer程序设计流程
1.创建并布置部件 3.设置Tab键次序

2.对部件使用布局管理
2010-10-29 IT Education & Training

4.建立信号与插槽的连接

2010年10月29日星期五

Neusoft Institute of Information

6.2.3 基于Qt Designer程序设计流程

编辑两个部件之间信号与插槽之间的连接方式

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

6.2.3 基于Qt Designer程序设计流程
Qt4 Designer将工程文件组织成.ui的文件
? 以使用Qt Designer为例 1. 通过designer设计并保存工程为**.ui文件

由.ui文件生成ui_** .h文件

2.手工编写一个main.cpp文件 3.手工编写**.cpp和**.h文件。 4.使用qmake工具生成.pro工程文件 qmake -project 5.生成makefile文件 生成 文件 qmake 6.编译 make

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

Qt Designer 功能框图

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

6.2.4 Qt应用程序实例
? QT应用程序实例—计算器 QT应用程序实例— 应用程序实例

? 保存为test.ui文件,放到test文件夹下

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

生成ui_test.h头文件
? uic –o ui_test.h test.ui

具体代码参见ui_test.h代码

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

编写test.h文件
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #include <QtGui/QWidget> #include "ui_test.h" class Dialog : public QDialog,public Ui::Dialog { Q_OBJECT public: Dialog(QDialog *parent=0); private slots: void val1(); void val2(); void val3(); void add(); void ok(); private: double num1; double num2; bool flag; };

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

编写test.cpp文件
? ? ? ? ? ? ? ? ? ? ? ? ? #include <QtGui> #include "test.h" Dialog::Dialog(QDialog *parent) { setupUi(this); num1=0; num2=0; flag=0; connect(Button1, SIGNAL(clicked()), this, SLOT(val1())); connect(Button2, SIGNAL(clicked()), this, SLOT(val2())); connect(Button3, SIGNAL(clicked()), this, SLOT(val3())); connect(Button_add, SIGNAL(clicked()), this, SLOT(add())); connect(Button_ok, SIGNAL(clicked()), this, SLOT(ok())); }

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

编写main.cpp
? ? ? ? ? ? ? ? ? ? ? #include<QApplication> #include<QtGui/QDialog> #include"test.h" int main(int argc, char *argv[]) { QApplication app(argc,argv); Dialog *dialog = new Dialog; dialog->show(); return app.exec(); }

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

编译及执行
? ? ? ? ? cd test qmake –project qmake make ./test

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

6.3 Qt4与数据库
? 6.3.1 Qt4与数据库的连接 ? 6.3.2 执行SQL命令 ? 6.3.3 SQL模型

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

Qt4连接数据库的原理
? ? ? ? #include<QtSql> Qt4中提供了QtSql模块。 为访问数据库提供了平台和相应的接口 提供模型视图体系,来完成可视化的信息输入

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

6.3.1 Qt4与数据库的连接
Qt SQL模块中连接并处理数据库被分成三个层次。 ? 第一层是数据库的驱动程序。 ? 第二层是数据库的连接层。实现对数据库的连接,对数据库 操作结果、错误信息的进行处理。 ? 第三层是用户接口层。提供了一套模型视图体系来完成对数 据库的可视化操作。

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

驱动程序
? Qt4中为多种数据库提供了本地驱动程序,见下表:
Driver QDB2 QIBASE QMYSQL QOCI QODBC QPSQL QSQLITE QSQLITE2 QTDS
2010-10-29 IT Education & Training

Database IBM DB2 version7.1 and later Borland InterBase MySQL Oracle(Oracle Call Interface) ODBC(includes Microsoft SQL server) PostgreSQL version 6.x and 7.x SQLite version 3 and later SQLite version 2 Sybase Adaptive Server

2010年10月29日星期五

Neusoft Institute of Information

6.3.1 Qt4与数据库的连接
Qt4与MySQL数据库的连接 与 数据库的连接

#include <QSqlDatabase> 用QSqlDatabase类通过驱动程序建立起和数据库的连接 设置hostName,databaseName,username,password等属性 打开数据库 操作数据库 关闭数据库

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

6.3.1 Qt4与数据库的连接
Qt4与MySQL数据库的连接 与 数据库的连接
? ? ? ? ? ? ? ? ? ? QSqlDatabase db = QSqlDatabase::addDatabase(“QMYSQL”); db.setHostName(“localhsot”); db.setDatabaseName(“testmysql.db”); db.setUserName(“user”); db.setPassword(“password”); if(!db.open()) { qDebug() << db.lastError(); qFatal(“Failed to connect.”); }

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

6.3.1 Qt4与数据库的连接
Qt4与SQLite数据库的连接 与 数据库的连接

? SQLite的驱动程序是QSQLITE。 ? SQLITE数据库不是基于服务器的,不需要设置username, password等属性,只要制定databaseName就可以了。
? ? ? ? ? ? ? QSqlDatabase db = QSqlDatabase::addDatabase(“QSQLITE”); db.setDatabaseName(“testsqlite.db”); if(!db.open()) { qDebug() << db.lastError(); qFatal(“Failed to connect.”); }

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

6.3.1 Qt4与数据库的连接
? SQLite数据库的一个优良特性是它可以在内存中建立, 操作快,省去了对磁盘的读写。把数据库保留在内存中, 可以通过这样的代码来实现: ? db.setDatabaseName(“:memory:”); ? 结束对数据库的操作,用close方法来实现关闭数据库。

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

6.3.2 执行SQL命令
? ? ? ? 用QSqlQuery对象来执行SQL命令来对数据库操作。 QSqlQuery query; query.exec(“SELECT * FROM teacher”); exec()方法执行之后,通过next()方法来指定结果集的第一 条记录,依次访问后续的记录,直到最后一条记录,next() 方法返回false。如果查询失败或者查询的结果集为空,那么 next()返回值也为false。 while(query.next()) { cout<<query.value(0)<<endl; cout<<query.value(1); }

? ? ? ? ?

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

6.3.3 SQL模型
? Qt中提供了模型类和模型/视图框架,使用这些模型,用户设置 完成对数据库的SQL语句,自动的向视图表中添加数据,可视化 的操作数据库。Qt提供了三种SQL模型。 ? (1)QSqlQueryModel:为SELECT SQL语句结果集提供只读数据模型
? (2)QSqlTabelModel:为单个数据库表提供可编辑的数据模型。 ? (3)QSqlRelationModel:为单个数据库表提供可编辑的数据模型,同时 可以和其他数据库表产生关联。

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

6.4 Qt/Embedde介绍
? Qt/Embedded是TrollTech公司在Qt的基础上开发的为嵌 入式GUI和应用程序的开发而设计的C++工具包。 ? Qt4之后,QT/Embedded改称为Qtopia-core

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

Qt-4.3.2的编译及安装
解压qtopia-core-opensource-src-4.3.2.tar.gz [root@localhost]# tar zxvf qtopia-core-opensource-src-4.3.2.tar.gz [root@localhost]# cd qtopia-core-opensource-src-4.3.2 [root@localhost]#./configure –xplatform qws/linux-arm-g++/ -qvfb –qconfig full –depths 4,8,16,24,32 –no-qt3support -v [root@localhost]#./configure –xplatform qws/linux-arm-g++/ -qvfb –depths 4,8,16,24,32 –no-qt3support [root@localhost]# gmake [root@localhost]# su –c “gmake install”

2010-10-29 IT Education & Training

2010年10月29日星期五

Neusoft Institute of Information

Qt/Embedded程序运行
? 在XWindow上进行模拟 [root@localhost]#qvfb –width 320 –height 680 & [root@localhost]#./test -qws

2010-10-29 IT Education & Training


相关文章:
嵌入式系统之基于QT的简单计算器
Qt 是一个 1991 年由奇趣科技开发的跨平台 C++图形界面应用程序开发框 架。它...Qt嵌入式系统--Qt图形界... 59页 2下载券 Qt_calculator __计算器... 45...
基于Qt的嵌入式Linux开发的GUI设计研究与实现
基于Qt 的嵌入式 Linux 开发的 GUI 设计研究与实现【摘要】随着嵌入式系统的发展,在Linux下使用Qt开发嵌入式应用程序是嵌入式图形用户界面(GUI)系统应 用研究的...
《嵌入式系统开发》课程设计基于QT的数码相框设计和实现
嵌入式系统开发》课程设计基于QT的数码相框设计和实现_工学_高等教育_教育专区...并重点介绍应用 Qt/Embedded 移植一个图形界面程序到 Mini2440 实验板的过程,...
基于QT的图形界面控制系统的开发
基于QT图形界面控制系统开发_计算机软件应用_IT/计算机_专业资料。基于 QT...关键词:Qt 技术 图形界面控制系统 程序的设计 随着嵌入式技术的发展,越来越多...
Linux下QT图形界面开发
Linux下QT图形界面开发_计算机软件应用_IT/计算机_专业资料。Linux下QT图形界面...Qt/Embeded 是面向嵌入式系统Qt 版本,是 Qt 的嵌入式 Linux 窗口,是完整...
毕业设计(论文)-基于QT的嵌入式终端应用程序开发--记事...
毕业设计(论文)-基于QT嵌入式终端应用程序开发--记事本和电子相册开发_经济/市场_经管营销_专业资料。华中农业大学本科毕业论文(或设计) 基于 QT嵌入式终端应...
基于S3C2440的QT移植与编程实现
本课题研究了基于 Linux 的典型嵌入式图形界面支持系统 Qt,基于嵌入 式 Linux ...-qt-gif -no-exceptions -thread -no-nis -no-cups -no-stl -qt-imgfmt...
基于qt的图片查看器设计
6 QT 图形用户界面 ... 7 QT Creator 的特点以及优势 ......-1- 基于嵌入式 Linux 系统Qt 图片查看器的设计 面系统应用软件开发。比如,应用程序的用户...
QT开发手册_图文
QT开发手册_计算机软件应用_IT/计算机_专业资料。第一章 LINUX 图形用户界面 ...在设计之 --- 1 --- 嵌入式系统教学平台实验教材 初,就充分考虑到了实时嵌入...
基于Qt的游戏开发(实训报告)
Qt 支持一般图形界面系统的由事件驱动的编程 模型,并且支持特有的信号与槽的编程模型,应用非常灵活。越来越多的嵌入式终端 需要一个图形化的人机借口界面(GUI) ,...
更多相关标签: