qt creator实战教程.docx

上传人:b****6 文档编号:4754064 上传时间:2022-12-08 格式:DOCX 页数:105 大小:6.92MB
下载 相关 举报
qt creator实战教程.docx_第1页
第1页 / 共105页
qt creator实战教程.docx_第2页
第2页 / 共105页
qt creator实战教程.docx_第3页
第3页 / 共105页
qt creator实战教程.docx_第4页
第4页 / 共105页
qt creator实战教程.docx_第5页
第5页 / 共105页
点击查看更多>>
下载资源
资源描述

qt creator实战教程.docx

《qt creator实战教程.docx》由会员分享,可在线阅读,更多相关《qt creator实战教程.docx(105页珍藏版)》请在冰豆网上搜索。

qt creator实战教程.docx

qtcreator实战教程

 

qtcreator实战教程c

一、QtCreator的安装和helloworld程序的编写(原创)

1.首先到Qt的官方网站上下载QtCreator,这里我们下载windows版的。

下载地址:

如下图我们下载:

DownloadQtSDK

forWindows*(178Mb)

下载完成后,直接安装即可,安装过程中按默认设置即可。

 

2.运行QtCreator,首先弹出的是欢迎界面,这里可以打开其自带的各种演示

程序。

 

3.我们用File->New菜单来新建工程。

 

4.这里我们选择Qt4GuiApplication。

 

5.下面输入工程名和要保存到的文件夹路径。

我们这里的工程名为helloworld。

 

6.这时软件自动添加基本的头文件,因为这个程序我们不需要其他的功能,所以

直接点击Next。

 

7.我们将baseclass选为QDialog对话框类。

然后点击Next。

 

8.点击Finish,完成工程的建立。

 

9.我们可以看见工程中的所有文件都出现在列表中了。

我们可以直接按下下面的

绿色的run按钮或者按下Ctrl+R快捷键运行程序。

 

10.程序运行会出现空白的对话框,如下图。

 

11.我们双击文件列表的dialog.ui文件,便出现了下面所示的图形界面编辑界

面。

 

12.我们在右边的器件栏里找到Label标签器件

 

13.按着鼠标左键将其拖到设计窗口上,如下图。

 

14.我们双击它,并将其内容改为helloworld。

 

15.我们在右下角的属性栏里将字体大小由9改为15。

 

16.我们拖动标签一角的蓝点,将全部文字显示出来。

 

17.再次按下运行按钮,便会出现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文件,都像这样解决就可以了。

二、QtCreator编写多窗口程序(原创)

实现功能:

程序开始出现一个对话框,按下按钮后便能进入主窗口,如果直

接关闭这个对话框,便不能进入主窗口,整个程序也将退出。

当进入主窗口后,

我们按下按钮,会弹出一个对话框,无论如何关闭这个对话框,都会回到主窗口。

实现原理:

程序里我们先建立一个主工程,作为主界面,然后再建立一个对

话框类,将其加入工程中,然后在程序中调用自己新建的对话框类来实现多窗口。

实现过程:

1.首先新建Qt4GuiApplication工程,工程名为nGui,Baseclass选为QWidget。

建立好后工程文件列表如下图。

 

2.新建对话框类,如下图,在新建中,选择QtDesignerFormClass。

 

3.选择DialogwithoutButtons。

 

4.类名设为myDlg。

 

5.点击Finish完成。

注意这里已经默认将其加入到了我们刚建的工程中了。

 

6.如下图,在mydlg.ui中拖入一个PushButton,将其上的文本改为“进入主

窗口”,在其属性窗口中将其objectName改为enterBtn,在下面的Signalsand

slotseditor中进行信号和槽的关联,其中,Sender设为enterBtn,Signal

设为clicked(),Receive设为myDlg,Slot设为accept()。

这样就实现了单击

这个按钮使这个对话框关闭并发出Accepted信号的功能。

下面我们将利用这个

信号。

 

7.修改主函数main.cpp,如下:

#include

#include"widget.h"

#include"mydlg.h"

//加入头文件

intmain(intargc,char*argv[])

 

{

QApplicationa(argc,argv);

Widgetw;

myDlgmy1;

//建立自己新建的类的对象my1

if(my1.exec()==QDialog:

:

Accepted)

断enterBtn是否被按下

{

w.show();

returna.exec();

关闭

}

//利用Accepted信号判

 

//如果被按下,显示主窗口

//程序一直执行,直到主窗口

elsereturn0;

//如果没被按下,则不会进入主窗口,整个程

序结束运行

}

主函数必须这么写,才能完成所要的功能。

如果主函数写成下面这样:

#include

#include"widget.h"

#include"mydlg.h"

intmain(intargc,char*argv[])

{

QApplicationa(argc,argv);

myDlgmy1;

if(my1.exec()==QDialog:

:

Accepted)

{

Widgetw;

w.show();

}

returna.exec();

}

这样,因为w是在if语句里定义的,所以当if语句执行完后它就无效了。

这样

导致的后果就是,按下enterBtn后,主界面窗口一闪就没了。

如果此时对程序

改动了,再次点击运行时,就会出现error:

collect2:

ldreturned1exit

status的错误。

这是因为虽然主窗口没有显示,但它只是隐藏了,程序并没有

结束,而是在后台运行。

所以这时改动程序,再运行时便会出错。

你可以按下调

试栏上面的红色Stop停止按钮来停止程序运行。

你也可以在windows任务管理

器的进程中将该进程结束,而后再次运行就没问题了,当然先关闭QtCreator,

而后再重新打开,这样也能解决问题。

 

如果把程序改为这样:

#include

#include"widget.h"

#include"mydlg.h"

intmain(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.如下图,在主窗口加入按钮,显示文本为“弹出一个对话框”,在其上点击鼠

标右键,在弹出的菜单中选择gotoslot。

 

9.我们选择单击事件clicked()。

 

10.我们在弹出的槽函数中添加一句:

my2.show();

my2为我们新建对话框类的另一个对象,但是my2我们还没有定义,所以

在widget.h文件中添加相应代码,如下,先加入头文件,再加入my2的定义语

句,这里我们将其放到private里,因为一般的函数都放在public里,而变量

都放在private里。

#ifndefWIDGET_H

#defineWIDGET_H

#include

#include"mydlg.h"

//包含头文件

 

namespaceUi

{

classWidget;

}

classWidget:

publicQWidget

{

Q_OBJECT

public:

Widget(QWidget*parent=0);

~Widget();

private:

Ui:

:

Widget*ui;

myDlgmy2;

//对my2进行定义

privateslots:

voidon_pushButton_clicked();

};

#endif//WIDGET_H

到这里,再运行程序,便能完成我们实验要求的功能了。

整个程序里,我们用两

种方法实现了信号和槽函数的关联,第一个按钮我们直接在设计器中实现其关

联;第二个按钮我们自己写了槽函数语句,其实图形的设计与直接写代码效果是

一样的。

这个程序里我们实现了两类窗口打开的方式,一个是自身消失而

后打开另一个窗口,一个是打开另一个窗口而自身不消失。

可以看到他们实现的

方法是不同的。

三、QtCreator登录对话框(原创)

实现功能:

在弹出对话框中填写用户名和密码,按下登录按钮,如果用户名和密码均正确则

进入主窗口,如果有错则弹出警告对话框。

实现原理:

通过上节的多窗口原理实现由登录对话框进入主窗口,而用户名和密码可以用

if语句进行判断。

实现过程:

1.先新建Qt4GuiApplication工程,工程名为mainWidget,选用QWidget作

为Baseclass,这样便建立了主窗口。

文件列表如下:

 

2.然后新建一个QtDesignerFormClass类,类名为loginDlg,选用Dialog

withoutButtons,将其加入上面的工程中。

文件列表如下:

 

3.在logindlg.ui中设计下面的界面:

行输入框为LineEdit。

其中用户名后面

的输入框在属性中设置其objectName为usrLineEdit,密码后面的输入框为

pwdLineEdit,登录按钮为loginBtn,退出按钮为exitBtn。

 

4.将exitBtn的单击后效果设为退出程序,关联如下:

 

5.右击登录按钮选择gotoslot,再选择clicked(),然后进入其单击事件的槽

函数,写入一句

voidloginDlg:

:

on_loginBtn_clicked()

{

accept();

}

6.改写main.cpp:

#include

#include"widget.h"

#include"logindlg.h"

intmain(intargc,char*argv[])

{

QApplicationa(argc,argv);

Widgetw;

loginDlglogin;

if(login.exec()==QDialog:

:

Accepted)

{

w.show();

returna.exec();

}

elsereturn0;

}

7.这时执行程序,可实现按下登录按钮进入主窗口,按下退出按钮退出程序。

8.添加用户名密码判断功能。

将登陆按钮的槽函数改为:

voidloginDlg:

:

on_loginBtn_clicked()

{

if(m_ui->usrLineEdit->text()==tr("qt")&&m_ui->pwdLineEdit->text()==tr

("123456"))

//判断用户名和密码是否正确

accept();

else{

QMessageBox:

:

warning(this,tr("Warning"),tr("usernameorpassword

error!

"),QMessageBox:

:

Yes);

 

//如果不正确,弹出警告对话框

}

}

并在logindlg.cpp中加入#include的头文件。

如果不加这个头文件,

QMessageBox类不可用。

9.这时再执行程序,输入用户名为qt,密码为123456,按登录按钮便能进入主

窗口了,如果输入错了,就会弹出警告对话框。

 

如果输入错误,便会弹出警告提示框:

 

10.在logindlg.cpp的loginDlg类构造函数里,添上初始化语句,使密码显示

为小黑点。

loginDlg:

:

loginDlg(QWidget*parent):

QDialog(parent),

m_ui(newUi:

:

loginDlg)

{

m_ui->setupUi(this);

m_ui->pwdLineEdit->setEchoMode(QLineEdit:

:

Password);

}

效果如下:

 

11.如果输入如下图中的用户名,在用户名前不小心加上了一些空格,结果程序

按错误的用户名对待了。

 

我们可以更改if判断语句,使这样的输入也算正确。

voidloginDlg:

:

on_loginBtn_clicked()

{

if(m_ui->usrLineEdit->text().trimmed()==tr("qt")&&m_ui->pwdLineEdit->

text()==tr("123456"))

accept();

else{

QMessageBox:

:

warning(this,tr("Warning"),tr("usernameorpassword

error!

"),QMessageBox:

:

Yes);

 

}

}

加入的这个函数的作用就是移除字符串开头和结尾的空白字符。

12.最后,如果输入错误了,重新回到登录对话框时,我们希望可以使用户名和

密码框清空并且光标自动跳转到用户名输入框,最终的登录按钮的单击事件的槽

函数如下:

voidloginDlg:

:

on_loginBtn_clicked()

{

if(m_ui->usrLineEdit->text().trimmed()==tr("qt")&&m_ui->pwdLineEdit->

text()==tr("123456"))

//判断用户名和密码是否正确

accept();

else{

QMessageBox:

:

warning(this,tr("Warning"),tr("usernameorpassword

error!

"),QMessageBox:

:

Yes);

//如果不正确,弹出警告对话框

m_ui->usrLineEdit->clear();//清空用户名输入框

m_ui->pwdLineEdit->clear();//清空密码输入框

m_ui->usrLineEdit->setFocus();//将光标转到用户名输入框

}

}

 

四、QtCreator添加菜单图标(原创)

在下面的几节,我们讲述Qt的MainWindow主窗口部件。

这一节只讲述怎样在其

上的菜单栏里添加菜单和图标。

1.新建Qt4GuiApplication工程,将工程命名为MainWindow,其他选项默认

即可。

生成的窗口界面如下图。

其中最上面的为菜单栏。

 

2.我们在TypeHere那里双击,并输入“文件(&F)”,这样便可将其文件菜单的

快捷键设为Alt+F。

(注意括号最好用英文半角输入,这样看着美观)

 

3.输入完按下Enter键确认即可,然后在子菜单中加入“新建(&N)”,确定后,

效果如下图。

 

4.我们在下面的动作编辑窗口可以看到新加的“新建”菜单。

 

5.双击这一条,可打开它的编辑对话框。

我们看到Icon项,这里可以更改“新

建”菜单的图标。

 

6.我们点击后面的...号,进入资源选择器,但现在这里面是空的。

所以下面我

们需要给该工程添加外部资源。

 

7.添加资源有两种方法。

一种是直接添加系统提供的资源文件,然后选择所需图

标。

另一种是自己写资源文件。

我们主要介绍第一种。

新建QtResourcesfile,

将它命名为menu。

其他默认。

 

8.添加完后如下图。

可以看到添加的文件为menu.qrc。

 

9.我们最好先在工程文件夹里新建一个文件夹,如images,然后将需要的图标

文件放到其中。

 

10.在QtCreator的menu.qrc文件中,我们点击Add下拉框,选择AddPrefix。

我们可以将生成的/new/prefix前缀改为其他名字,如/File。

 

11.然后再选择Add下拉框,选择AddFiles。

再弹出的对话框中,我们到新建

的images文件夹下,将里面的图标文件全部添加过来。

 

12.添加完成后,我们在QtCreator的File菜单里选择SaveAll选项,保存所

做的更改。

 

13.这时再打开资源选择器,可以看到我们的图标都在这里了。

(注意:

如果不显

示,可以按一下上面的Reload按钮)

 

14.我们将new.png作为“新建”菜单的图标,然后点击Shortcut,并按下

Crtl+N,便能将Crtl+N作为“新建”菜单的快捷键。

 

15.这时打开文件菜单,可以看到“新建”菜单已经有图标了。

 

运行程序后效果如下。

 

16.我们在工程文件夹下查看建立的menu.qrc文件,可以用写字板将它打开。

 

其具体内容如下。

 

附:

第二种添加资源文件的方法。

1.首先右击工程文件夹,在弹出的菜单中选择AddNew,添加新文件。

也可以用

File中的添加新文件。

 

2.我们选择文本文件。

 

3.将文件名设置为menu.qrc。

 

4.添加好文件后将其内容修改如下。

可以看到就是用第一种方法生成的

menu.qrc文件的内容。

 

5.保存文件后,在资源管理器中可以看到添加的图标文件。

 

五、QtCreator布局管理器的使用(原创)

上篇讲解了如何在QtCreator中添加资源文件,并且为菜单添加了图标。

这次

我们先对那个界面进行一些完善,然后讲解一些布局管理器的知识。

首先对菜单进行完善。

1.我们在上一次的基础上再加入一些常用菜单。

“文件”的子菜单如下图。

中间的分割线可以点击AddSeparator添加。

 

“编辑”子菜单的内容如下。

 

“帮助”子菜单的内容如下。

 

2.我们在动作编辑器中对各个菜单的属性进行设置。

如下图。

 

3.我们拖动“新建”菜单的图标,将其放到工具栏里。

拖动“新建”菜单的图标。

 

将其放到菜单栏下面的工具栏里。

 

4.我们再添加其他几个图标。

使用AppendSeparator可以添加分割线。

 

5.最终效果如下。

如果需要删除图标,可以在图标上点击右键选择Removeaction

即可。

 

下面简述一下布局管理器。

(这里主要以垂直布局管理器进行讲解,其他类型管理器用法与之相同,其效

果可自己验证。

1.在左边的器件栏里拖入三个PushButton和一个VerticalLayout(垂直布局

管理器)到中心面板。

如下图。

 

2.将这三个按钮放入垂直布局管理器,效果如下。

可以看到按钮垂直方向排列,

并且宽度可以改变,但高度没有改变。

 

3.我们将布局管理器整体选中,按下上面工具栏的BreakLayout按钮,便可取

消布局管理器。

(我们当然也可以先将按钮移出,再按下Delete键将布局管理

器删除。

 

4.下面我们改用分裂器部件(QSplitter)。

 

先将三个按钮同时选中,再按下上面工具栏的LayOutVerticallyinSplitter

(垂直分裂器)。

 

效果如下图。

可以看到按钮的大小可以随之改动。

这也就是分裂器和布局管理器

的分别。

 

5.其实布局管理器不但能控制器件的布局,还有个很重要的用途是,它能使器件

的大小随着窗口大小的改变而改变。

 

我们先在主窗口的中心拖入一个文本编辑器TextEdit。

 

这时直接运行程序,效果如下。

可以看到它的大小和位置不会随着窗口改变。

 

下面我们选中主窗口部件,然后在空白处点击鼠标右键,选择Layout->LayOut

inaGrid,使整个主窗口的中心区处于网格布局管理器中。

 

可以看到,这时文本编辑器已经占据了整个主窗口的中心区。

 

运行一下程序,可以看到无论怎样拉伸窗口,文本编辑框的大小都会随之改变。

 

我们在这里一共讲述了三种使用布局管理器的方法,一种是去器件栏添加,一

种是用工具栏的快捷图标,还有一种是使用鼠标右键的选项。

程序中用到的图标是我从Ubuntu中复制的,可以到

http:

//www.qtcn.org/bbs/read.php?

tid=23252&page=1&toread=1下载到。

 

六、QtCreator实现文本编辑(原创)

前面已经将界面做好了,这里我们为其添加代码,实现文本编辑的功能。

首先实现新建文件,文件保存,和文件另存为的功能。

(我们先将上次的工程文件夹进行备份,然后再对其进行修改。

在写较大的程序

时,经常对源文件进行备份,是个很好的习惯。

在开始正式写程序之

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1