Qt_Creator的使用

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

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

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

资源描述

一、QtCreator的安装和helloworld程序的编写我们这里讲述windows下的QtCreator,在linux下基本相同。本文先讲述基本的下载、安装和最简单程序的编写,然后在附录里又讲解了两种其他的编写程序的方法。1.首先到Qt的官方网站上下载QtCreator,这里我们下载windows版的。下载地址:如下图我们下载:DownloadQtSDKforWindows*(178Mb)下载完成后,直接安装即可,安装过程中按默认设置即可。2.运行QtCreator,首先弹出的是欢迎界面,这里可以打开其自带的各种演示程序。3.我们用File-New菜单来新建工程。4.这里我们选择Qt4GuiApplication。PDF文件使用pdfFactoryPro试用版本创建下面输入工程名和要保存到的文件夹路径。我们这里的工程名为helloworld。6.这时软件自动添加基本的头文件,因为这个程序我们不需要其他的功能,所以直接点击Next。7.我们将baseclass选为QDialog对话框类。然后点击Next。PDF文件使用pdfFactoryPro试用版本创建,完成工程的建立。9.我们可以看见工程中的所有文件都出现在列表中了。我们可以直接按下下面的绿色的run按钮或者按下Ctrl+R快捷键运行程序。10.程序运行会出现空白的对话框,如下图。11.我们双击文件列表的dialog.ui文件,便出现了下面所示的图形界面编辑界面。12.我们在右边的器件栏里找到Label标签器件PDF文件使用pdfFactoryPro试用版本创建按着鼠标左键将其拖到设计窗口上,如下图。14.我们双击它,并将其内容改为helloworld。15.我们在右下角的属性栏里将字体大小由9改为15。16.我们拖动标签一角的蓝点,将全部文字显示出来。PDF文件使用pdfFactoryPro试用版本创建再次按下运行按钮,便会出现helloworld。到这里helloworld程序便完成了。QtCreator编译的程序,在其工程文件夹下会有一个debug文件夹,其中有程序的.exe可执行文件。但QtCreator默认是用动态链接的,就是可执行程序在运行时需要相应的.dll文件。我们点击生成的.exe文件,首先可能显示“没有找到mingwm10.dll,因此这个应用程序未能启动。重新安装应用程序可能会修复此问题。”表示缺少mingwm10.dll文件。解决这个问题我们可以将相应的.dll文件放到系统中。在QtCreator的安装目录的qt文件下的bin文件夹下(我安装在了D盘,所以路径是D:\Qt\2009.04\qt\bin),可以找到所有的相关.dll文件。在这里找到mingwm10.dll文件,将其复制到C:\WINDOWS\system文件夹下,即可。下面再提示缺少什么dll文件,都像这样解决就可以了。附1:用纯源码编写。1.新建空的Qt4工程。PDF文件使用pdfFactoryPro试用版本创建,并选择工程保存路径(提示:路径中不能有中文)。PDF文件使用pdfFactoryPro试用版本创建在新建好的工程中添加文件。右击工程文件夹,弹出的菜单中选择AddNew。4.选择普通文件。点击Ok。5.文件名为main.cpp,点击Next进入下一步。PDF文件使用pdfFactoryPro试用版本创建这里自动将这个文件添加到了新建的工程中。保持默认设置,点击完成。7.在main.cpp文件中添加代码。PDF文件使用pdfFactoryPro试用版本创建这时点击运行,程序执行了,但看不到效果,因为程序里什么也没做。我们点击信息框右上角的红色方块,停止程序运行。9.我们再更改代码。添加一个对话框对象。10.运行效果如下。PDF文件使用pdfFactoryPro试用版本创建我们更改代码如下,在对话框上添加一个标签对象,并显示helloworld。12.运行效果如下。PDF文件使用pdfFactoryPro试用版本创建:利用ui文件。1.建立新的空工程,这里的工程名为hello,建立好工程后,添加新文件。这里添加QtDesignerForm。2.选择一个对话框做模板。PDF文件使用pdfFactoryPro试用版本创建你可以更改文件名,我们这里使用默认设置。PDF文件使用pdfFactoryPro试用版本创建在新建好的框口上添加一个标签,并更改文本为helloworld。5.在工程文件夹上点击右键,弹出的菜单中选择第一项编译工程。6.因为还没有写主函数,所以现在编译文件会出现错误,不过没关系,因为我们只是想编译一下ui文件。7.点击这个图标,去掉弹出的菜单中第二项前的对勾,显示隐藏的文件。这时你就能看PDF文件使用pdfFactoryPro试用版本创建文件对应的头文件了。而如果去掉菜单中的第一项前的对勾,列表中的文件就会分类显示,如图8.ui文件对应的.h文件默认为ui_dialog.h(例如form.ui对应ui_form.h)。其中是设计器设计的窗口的对应代码。我们这里的.h文件是最简单的,其类名为Ui_Dialog,可以看到其中有我们添加的标签对象。9.在这个类里有一个setupUi函数,我们就是利用这个函数来使用设计好的窗口的。PDF文件使用pdfFactoryPro试用版本创建文件,并更改内容如下。其中ui-setupUi(dd);一句就是将设计的窗口应用到新建的窗口对象上。11.这时运行程序,效果如下。PDF文件使用pdfFactoryPro试用版本创建程序,其实也就是两种,一种用设计器,一种全部用代码生成,其实他们是等效的。因为我们已经看到,就算是设计器生成,其实也是写了一个对应的ui.h文件,只不过这个文件是自动生成的,不用我们自己写而已。PDF文件使用pdfFactoryPro试用版本创建二、QtCreator编写多窗口程序实现功能:程序开始出现一个对话框,按下按钮后便能进入主窗口,如果直接关闭这个对话框,便不能进入主窗口,整个程序也将退出。当进入主窗口后,我们按下按钮,会弹出一个对话框,无论如何关闭这个对话框,都会回到主窗口。实现原理:程序里我们先建立一个主工程,作为主界面,然后再建立一个对话框类,将其加入工程中,然后在程序中调用自己新建的对话框类来实现多窗口。实现过程:1.首先新建Qt4GuiApplication工程,工程名为nGui,Baseclass选为QWidget。建立好后工程文件列表如下图。2.新建对话框类,如下图,在新建中,选择QtDesignerFormClass。3.选择DialogwithoutButtons。PDF文件使用pdfFactoryPro试用版本创建。5.点击Finish完成。注意这里已经默认将其加入到了我们刚建的工程中了。6.如下图,在mydlg.ui中拖入一个PushButton,将其上的文本改为“进入主窗口”,在其属性窗口中将其objectName改为enterBtn,在下面的Signalsandslotseditor中进行信号和槽的关联,其中,Sender设为enterBtn,Signal设为clicked(),Receive设为myDlg,Slot设为accept()。这样就实现了单击这个按钮使这个对话框关闭并发出Accepted信号的功能。下面我们将利用这个信号。7.修改主函数main.cpp,如下:PDF文件使用pdfFactoryPro试用版本创建加入头文件intmain(intargc,char*argv[]){QApplicationa(argc,argv);Widgetw;myDlgmy1;//建立自己新建的类的对象my1if(my1.exec()==QDialog::Accepted)//利用Accepted信号判断enterBtn是否被按下{w.show();//如果被按下,显示主窗口returna.exec();//程序一直执行,直到主窗口关闭}elsereturn0;//如果没被按下,则不会进入主窗口,整个程序结束运行}主函数必须这么写,才能完成所要的功能。如果主函数写成下面这样:#includeQtGui/QApplication#includewidget.h#includemydlg.hintmain(intargc,char*argv[]){QApplicationa(argc,argv);myDlgmy1;if(my1.exec()==QDialog::Accepted){Widgetw;w.show();}returna.exec();}这样,因为w是在if语句里定义的,所以当if语句执行完后它就无效了。这样导致的后果就是,按下enterBtn后,主界面窗口一闪就没了。如果此时对程序改动了,再次点击运行时,就会出现error:collect2:ldreturned1exitstatus的错误。这是因为虽然主窗口没有显示,但它只是隐藏了,程序并没有结束,而是在后台运行。所以这时改动程序,再运行时便会出错。你可以按下调试栏上面的红色Stop停止按钮来停止程序运行。你也可以在windows任务管理器的进程中将该进程结束,而后再次运行就没问题了,当然先关闭QtCreator,而后再重新打开,这样也能解决问题。PDF文件使用pdfFactoryPro试用版本创建如果把程序改为这样:#includeQtGui/QApplication#includewidget.h#includemydlg.hintmain(intargc,char*argv[]){QApplicationa(argc,argv);myDlgmy1;Widgetw;if(my1.exec()==QDialog::Accepted){w.show();}returna.exec();}这样虽然解决了上面主窗口一闪而过的问题,但是,如果在my1对话框出现的时候不点enterBtn,而是直接关闭对话框,那么此时整个程序应该结束执行,但是事实是这样的吗?如果你此时对程序进行了改动,再次按下run按钮,你会发现又出现了error:collect2:ldreturned1exitstatus的错误,这说明程序并没有结束,我们可以打开windows任务管理器,可以看到我们的程序仍在执行。因为returna.exec();一句表示只要主窗口界面不退出,那么程序就会一直执行。所以只有用第一种方法,将该语句也放到if语句中,而在else语句中用elsereturn0;,这样如果enterBtn没有被按下,那么程序就会结束执行了。到这里,我们就实现了一个界面结束执行,然后弹出另一个界面的程序。下面我们在主窗口上加一个按钮,按下该按钮,弹出一个对话框,但这个对话框关闭,不会使主窗口关闭。8.如下图,在主窗口加入按钮,显示文本为“弹出一个对

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

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

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

×
保存成功