Qt入门StepByStep

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Qt入门StepByStep积成电子白振勇6533Lesson1最简单的对话框简介大家好,从今天开始,我们一起来学习一下qt编程。qt的安装、环境设置、qt的项目文件.pro的配置以及unix下的调试不在本教程讨论范围,有关这些项目,请参阅:QT使用过程中须注意的地方.txt程序的编译.docTru64下CXX的ladebug调试的用法.doc学习ladebug调试工具.docQt是类似于MFC的第三方类库,它提供了跨平台的开发功能,因此我们可以用它来在unix上面开发用户界面。因为unix系统对于文件名是大小写敏感的,所以我们建议为文件取名时请用小写。为了方便阅读,本教程中的代码行均使用斜体字蓝色标注。我们第一步的目标是显示一个对话框,然后在对话框上显示一些信息。程序运行效果如下:我们的项目包含的基本文件如下:对话框资源文件cdlgshowbase.ui对话框继承类(子类)的定义文件对话框继承类(子类)的实现文件包含main()函数的主文件myqt.cpp当然我们也不能缺少一个项目文件showdialog.pro既然我们要显示这样一个对话框,我们就需要绘制出一个对话框资源。Qt使用的对话框资源文件为*.ui文件,它由Qt自带的designer工具绘制而成。我们运行designer,它会提醒我们建立何种文件,如下图,我们选择”Dialog”。1.designer会为我们生成一个如下图所示的默认对话框,我们可以根据需要调整其大小。2.可以通过上下文菜单中的“PropertyEdirot/SignalHandlers”调出属性设置界面。在右侧的属性框中可以做如下修改:name:CDlgShowBasecaption:“我的对话框”其中name项就是我们所要使用的这个对话框的类型。取名中带有”Base”表明我们准备拿它当作一个基类(父类)。请为您的对话框取一个贴切的名字,它也影响到对话框保存时的文件名是否容易识别。保存此对话框,接受默认的文件名”cdlgshowbase.ui”。这时您将注意到这个文件名其实跟刚才为对话框取的名字一致。3.在上下文菜单中选择“Toolbox”,调出控件工具箱。如下图:为我们的新对话框添加一个文本框和一个按钮,如下图:修改按钮的属性:name:btnExitcaption:“退出”4.然后,为“退出”按钮设置消息响应函数:在按钮上点右键,选择”Connections”在下面的对话框中选择“New”。然后按照下面的选择设置即可。5.为文本框设置属性:name:txtInfo到现在为止,我们的对话框绘制告一段落,下一步,我们需要做如下工作:为了在程序中引用刚才我们绘制的对话框,我们需要建立一个对话框CDlgShowBase的继承类(子类)CDlgShow。因此,我们需要建立继承类CDlsShow的定义文件和实现文件。我们把它们暂时取名为cdlgshow.h和cdlgshow.cpp。为了给编译器准备main()入口函数,我们需要编写一个包含有main()函数的文件,暂时取名为myqt.cpp,在此文件的main()函数中,我们将建立CDlgShow类的对象并且把它显示出来。为了建立一个VC可识别的工程,我们还要建立一个后缀为.pro的项目文件(工程文件),我们为它取名为showdialog.pro首先我们建立CDlgShowBase的继承类(子类)CDlgShow的定义文件和实现文件1.我们先介绍定义文件的编写。在定义文件cdlgshow.h的开头,我们加入了宏定义“CDLGSHOW_H”的判断,防止对本文件的重复引用。#ifndefCDLGSHOW_H#defineCDLGSHOW_H请注意在文件的结尾处,还有宏定义判断的结束#endif然后我们加入基类CDlgShowBase的定义文件“cdlgshowbase.h”的引用#include“cdlgshowbase.h”这个文件是编译过程中生成的。它的名字同先前我们保存的.ui文件一致,只是后缀为.h。最后我们编写继承类CDlgShow的定义。下面的代码行表示类CDlgShow的父类是CDlgShowBase。classCDlgShow:publicCDlgShowBase然后我们加入一行宏定义,在此我们暂不作解释。Q_OBJECT然后我们为CDlgShow类添加构造函数和析构函数的定义。public:CDlgShow(QWidget*parent=0,constchar*name=0,boolmodal=FALSE,WFlagsfl=0);~CDlgShow();2.我们介绍实现文件的编写。在实现文件的开头我们添加下面的行是因为在对话框中我们引用了一个文本框控件。#includeqlabel.h至于到底需要引用哪个头文件,我们可以使用下面的方法:在designer中,调出“对象浏览”界面,方法如下:找到控件“txtInfo”对应的类,从下图中我们可以得知txtInfo类型为”QLabel”,因此,我们以此为依据,可以知道我们需要添加引用的头文件为qlabel.h(它同类名一致,只是需要小写)。然后我们在实现文件中添加对定义文件的引用#includecdlgshow.h最后我们编写构造函数和析构函数。请注意,在构造函数中我们对CDlgShow的父类进行了赋初值处理::CDlgShowBase(parent,name,modal,fl)并且在构造函数中加入下面的代码行,代码中的tr起字符集转换的作用。txtInfo-setText(tr(大家好!));请注意上面代码行中的txtInfo,还记得吗?它就是我们在对话框中绘制的文本框的名字,我们对其进行操作时使用了指针操作符”-”。如果您在对话框中绘制了其他控件,要对其操作时,也需要使用指针操作符”-”。然后,我们建立myqt.cpp,并在其中完成main()函数的编写1.为了引用QApplication类,我们需要添加对”qapplication.h”的引用#includeqapplication.h2.为了增加对中文的支持我们需要添加下面的代码#includeqgb18030codec.h#includelocale.h3.为了引用我们绘制的对话框,我们需要添加对话框继承类的头文件的引用#includecdlgshow.h4.在main()函数的开始处,我们添加对汉字的支持setlocale(LC_ALL,);QGb18030Codeccodec;QTextCodec::setCodecForTr(&codec);QTextCodec::setCodecForLocale(&codec);5.紧接着我们定义我们的QApplication对象,并将main()函数的入口参数传递进去QApplicationa(argc,argv);6.我们将刚刚定义的codec作为我们QApplication的默认字符集a.setDefaultCodec(&codec);7.然后我们定义界面使用字体。其中有Windows平台和unix平台的不同代码。QFontappFont;#ifdefWIN32appFont.setFamily(QObject::tr(宋体));appFont.setPointSize(9);#elseappFont.setFamily(InterfaceSystem);appFont.setPointSize(12);#endifappFont.setStyleHint(QFont::System,QFont::PreferQuality);a.setFont(appFont);8.定义我们的对话框对象并将它显示出来。CDlgShowdlg;dlg.show();9.将此对象设置为QApplication的主框架a.setMainWidget(&dlg);a.connect(&a,SIGNAL(lastWindowClosed()),&a,SLOT(quit()));10.阻塞等待应用程序退出的消息intret=a.exec();最后编写项目文件”.pro”,并且用VC编译我们的程序。将myqt.cpp,cdlgshowbase.ui,cdlgshow.h,cdlgshow.cpp分别添加到项目文件showdialog.pro中,如下:SOURCES+=myqt.cpp\cdlgshow.cppHEADERS+=cdlgshow.hFORMS+=cdlgshowbase.uiOBJECTS_DIR=../obj/lesson1DESTDIR=../bin项目文件的编写不在本教程讨论范围,请参阅“程序的编译.doc”保存项目文件,然后使用VC中qt工具条上的打开qt项目文件的按钮,如下图:点击确定后,使用VC“文件”菜单中“OpenWorkspace”菜单,打开生成的.dsp文件”myqt.dsp”编译我们的程序,至此,我们的对话框新鲜出炉了!Lesson2引用iesstd库简介本讲我们将学习如何在我们的项目中使用iesstd.dll中的类CIIString,CIITime等。我们对lesson1项目作些改动。我们的目标是取系统时间,然后将它显示在我们的对话框中的文本框上。程序运行效果如下:我们的项目包含的基本文件如下:对话框资源文件cdlgshowbase.ui对话框继承类(子类)的定义文件对话框继承类(子类)的实现文件包含main()函数的主文件myqt.cpp项目文件showdialog.pro首先我们要将我们的整个文件夹放到src/tools文件夹下。您也可以选择别的目录,但是,那样您就需要相应修改项目文件中”INCLUDEPATH”和LIBS的值。因为类型CIIString和CIITime等的定义在头文件”ies_std.h”中,因此,我们需要将其包含到我们的文件中。在cdlgshow.cpp中添加下面的代码行:#includeies_std.h为了让VC找到这个头文件,我们需要在项目文件showdialog.pro中添加下面的项目:INCLUDEPATH+=../../include为了在链接时VC能找到我们的lib文件,我们还需要在项目文件showdialog.pro中添加下面的项目,并保存项目文件。在win32部分添加:LIBS+=../../../lib/iesstd.lib在unix部分添加:LIBS+=-L../../../lib\-liesstd在cdlgshow.cpp中定义我们的对象,并对其进行操作在CDlgShow类的构造函数中添加如下代码CIIStringstr;CIITimetmNow;tmNow.SetCurrentTime();str.Format(%04d-%02d-%02d,%02d:%02d:%02d,tmNow.GetYear(),tmNow.GetMonth(),tmNow.GetDay(),tmNow.GetHour(),tmNow.GetMinute(),tmNow.GetSecond());txtInfo-setText(tr(str.GetBuf()));请记住,项目文件修改后,需要重新调用VC里Qt工具条上的打开命令转换项目文件,重新生成.dsp文件,然后我们需要重新打开.dsp文件,这样才能保证我们的项目是最新的。重新编译我们的程序,具有新功能的对话框出现了!Lesson3数据库访问简介本讲我们将学习如何使用我们提供的数据库访问接口对各种数据库进行访问。我们的目标是访问描述数据库,取出开关表中i10的一个开关,把它的id显示出来。程序运行效果如下:我们的项目包含的基本文件如下:对话框资源文件cdlgshowbase.ui对话框继承类(子类)的定义文件对话框继承类(子类)的实现文件包含main()函数的主文件myqt.cpp项目文件showdialog.pro这次我们的文件夹仍然放在src/tools下。我们将对话框的初始化单独放到一个函数initDial

1 / 22
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功