Qt快速入门学习笔记(基础篇)

本文基于Qter开源社区论坛版主yafeilinux编写的《Qt快速入门系列教程目录》,网址:http://bbs.qter.org/forum.php?mod=viewthread&tid=193。参考书为基于该系列教程《Qt Creator快速入门》《Qt及Qt Quick开发实战精解》

1、关联Qt库。如果是分别安装的Qt Creator和Qt库,而不是安装集成Qt Creator和Qt库的SDK,则需要手动关联Qt库。打开工具→选项菜单,然后选择“构建和运行”一项,再进入Qt版本选项卡。点击右上角的“添加”按钮,然后会让选择qmake.exe文件,我们在Qt(不是Qt Creator)安装目录的bin目录中找到该文件并打开。现在已经默认生成了版本信息,我们点击确定按钮即可。

2、关联MinGW。在安装Qt 4.8.6及以后的Qt 4版本时,应该按照安装时的提示来下载相应版本的MinGW,不然编译程序无法运行。如果是Qt4版本,需要使用GCC 4.4,也就是MinGW需要是4.4版本的,其他新的版本均不可用。在Qt 4.8版本,需要下载并指定GDB才能正常调试。下载完MinGW和GDB以后,将其解压到Qt的安装目录中,比如这里都解压到了C:\Qt目录中。打开工具→选项菜单,然后选择“构建和运行”一项,再进入工具链选项卡。点击右上角的“添加”按钮,然后会让选择mingw32-g++.exe文件,我们在MinGW安装目录的bin目录中找到该文件并打开。关联GDB则进入调试器选项卡添加GDB相关exe文件。

如果安装的是集成开发包QtSDK,则不需要手动关联Qt库、MinGW和GDB,由Qt自动关联。

注意:Qt5以后版本默认也包含了所有需要的工具,不存在这里的情况,直接下载安装即可使用!

3、在创建桌面版项目时,最好选中“使用影子构建”,这样编译生成的文件会和源码分别存放,如下图所示。编译完成后会发现多了一个helloworld-build-desktop-Qt_4_8_1__4_8_1____目录,里面存放的就是编译生成的文件。这就是前面创建项目讲到的 “使用影子构建” ,如果没有选中这个,那么生成的文件就会和源码在同一个目录里。

4、补充:如果要给生成的exe可执行文件更换一个自定义图标,可以这样做:
(1)在项目中添加一个myapp.rc(名字可以随意)文件,然后在里面输入下面一行代码:IDI_ICON1               ICON    DISCARDABLE     "appico.ico",这里的appico.ico就是自己的.ico图标文件;

(2)在.pro项目文件中添加下面一行代码:RC_FILE = myapp.rc,

(3)重新编译

如果需要更换新的图标,建议先清理项目的编译文件,再重新编译,否则可能会报错,如下。

“:-1: 错误:No rule to make target `..\helloworld\myapp.rc‘, needed by `debug/myapp_res.o‘.  Stop.”

5、在创建主窗口MainWindow项目后,打开mainwindow.ui文件进入设计模式。在这里可以看到界面左上角的“在这里输入”,我们可以在这里添加菜单。双击“在这里输入”,将其更改为“文件(&F)”,然后按下回车键,效果如下图所示。这里的&F表明将菜单的快捷键设置为了Alt+ F,可以看到,实际的显示效果中&符号是隐藏的。

同样的方法,我们在文件菜单中添加“新建(&N)”子菜单,效果如下图所示。菜单后面的那个加号图标是用来创建下一级菜单的。

Qt中的一个菜单被看做是一个Action,我们在下面的Action编辑器中可以看到刚才添加的“新建”菜单,如下图所示。

双击该条目,会弹出编辑动作对话框,这里可以进行各项设置,比如我们可以设置菜单的快捷键,点击一下快捷键后面的行编辑器,然后按下键盘上的Ctrl + N,这样就可以将该菜单的快捷键设置为Ctrl + N。如下图所示。那么大家可能会问,既然该菜单的快捷键是这么设置的,那么前面设置的“新建(N)”中的N是什么呢?这个可以被称为加速键,就是只有当文件菜单处于激活(显示)状态时,按下N键才会执行新建菜单的功能。

6、Qt中可以使用资源文件将各种类型的文件添加到最终生成的可执行文件中,这样就可以避免使用外部文件可能出现的一些问题。而且,在编译时Qt还会将资源文件进行压缩,我们可能发现生成的可执行文件比我们添加到其中的资源文件还要小。创建完资源文件后会自动打开该资源文件,这里需要先在下面添加前缀,就是点击添加按钮,然后选择前缀,默认的前缀是“/new/prefix1”,这个可以随意修改(不要出现中文字符),我们这里因为要添加图片,所以修改为/myImages。然后再按下添加按钮来添加文件,这里最好将所有要用到的图片放到项目目录中。比如我们这里在项目目录中新建了一个images文件夹,然后将需要的图标文件粘贴进去。添加完文件后,如下图所示。

当添加完资源后,一定要按下Ctrl + S来保存资源文件,不然在后面可能无法显示已经添加的资源。

对于添加的资源文件,在项目目录中可以看到,即myResources.qrc,使用写字板程序将其打开,可以发现它其实就是一个XML文档:

<RCC>

<qresourceprefix="/myImages">

<file>images/filenew.png</file>

<file>images/fileopen.png</file>

<file>images/filesave.png</file>

<file>images/filesaveas.png</file>

<file>images/find.png</file>

</qresource>

</RCC>

7、使用代码添加菜单时,在构造函数中添加如下代码:

QAction *openAction = new QAction(QString::fromUtf8("&Open"), this);// 创建新的动作

QIcon icon(":/myImages/images/fileopen.png");// 添加图标

openAction->setIcon(icon);

openAction->setShortcut(QString::fromUtf8("Ctrl+O"));// 设置快捷键

ui->menu_F->addAction(openAction);// 在文件菜单中设置新的打开动作

这里添加图标时,就是使用的资源文件中的图标。使用资源文件,需要在最开始使用冒号,然后添加前缀,后面是文件的路径。在代码中使用文件菜单,就是使用其objectName。大家现在可以运行程序查看效果,当然这里也可以将Open改为中文。

8、向工具栏添加图标:可以将动作编辑器中的动作拖动到工具栏中作为快捷图标使用;可以在工具栏上点击鼠标右键来添加分隔符。

9、使用垂直布局管理器(QVBoxLayout)布局:部件自动垂直排列,并且进行水平拉伸,无论如何改变布局管理器的大小,按钮总是水平方向变化。

使用垂直分裂器(QSplitter)布局:部件自动垂直排列,但进行放大可以发现,使用分裂器按钮纵向是可以变大的,这就是分裂器和布局管理器的重要区别。

10、快速从头文件声明处创建函数定义的方法:到mainwindow.h文件中,将鼠标定位到showFindText()函数上,然后点击右键,在弹出的菜单中选择“重构”→“在mainwindow.cpp添加声明”,或者直接使用Alt+Enter快捷键,这样就会直接在mainwindow.cpp文件中添加函数定义,并跳转到该函数处。

11、在QtCreator中有几种快速定位函数的方法:

第一种,在函数声明的地方直接跳转到函数定义的地方。

例如我们在mainwindow.h文件的loadFile()函数上点击鼠标右键,在弹出的菜单上选择“在方法声明/定义之间切换”,这时就会自动跳转到mainwindow.cpp文件中该函数的定义处。如下图所示。当然还可以反向使用。

第二种,快速查看一个文件里的所有函数。

可以在编辑器正上方的下拉框里查看正在编辑的文件中所有的函数的列表,点击一个函数就会跳转到指定位置。如下图所示。

第三种,使用类视图或者大纲视图。

在项目列表上面的下拉框中可以更改查看的内容,如果选择为类视图或者大纲,则会显示文件中所有的函数的列表。如下图所示。

第四种,使用查找功能查看函数的所有调用处。

在一个函数名上点击鼠标右键,然后选择“查找何处被使用”菜单,这时就会在下面的搜索结果栏中显示该函数所有的使用位置。我们可以通过点击一个位置来跳转到该位置。如下图所示。

12、在Action编辑器中,有两个属性toolTip和statusTip,分别为工具栏提示和状态栏提示,如下图

这时运行程序,当光标移动到新建动作上时,在下面的工具栏和状态栏将会出现设置的提示。如下图所示

13、状态信息可以被分为三类:临时信息,如一般的statusTip提示信息,上面讲到的动作提示就是临时信息;正常信息,如显示页数和行号;永久信息,如显示版本号或者日期。可以使用showMessage()函数来显示一个临时消息,它会出现在状态栏的最左边。一般用statusBar->addWidget()函数添加一个QLabel到状态栏上用于显示正常信息,它会生成到状态栏的最左边,可能会被临时消息所掩盖。如果要显示永久信息,要使用statusBar->addPermanentWidget()函数来添加一个如QLabel一样的可以显示信息的部件,它会生成在状态栏的最右端,不会被临时消息所掩盖。

14、关于随机数,在Qt中是使用qrand()和qsrand()两个函数实现的。在使用qrand()函数产生随机数之前,一般要使用qsrand()函数为其设置初值,如果不设置初值,那么每次运行程序,qrand()都会产生相同的一组随机数。为了每次运行程序时,都可以产生不同的随机数,我们要使用qsrand()设置一个不同的初值。

时间: 2024-10-09 23:17:28

Qt快速入门学习笔记(基础篇)的相关文章

渗透学习笔记--基础篇--sql注入(字符型)

环境:dvwa1.7数据库:mysql前置知识:sql语句(Click me)      在进行sql注入前,我们先熟悉熟悉select语句.一.打开我们的sql终端 二.进入之后可以看到有mysql>我们输入sql语句,即可返回我们想要的结果,注意分号哟!我们使用的dvwa,在我们前几章设置的时候,会在数据库中生成一个dvwa的database:这里我们使用它来进行我们的select 语句:(1)使用dvwa数据库use dvwa;(2)在users表里查询用户名为'admin'的所有信息se

iOS开发学习笔记:基础篇

iOS开发需要一台Mac电脑.Xcode以及iOS SDK.因为苹果设备都具有自己封闭的环境,所以iOS程序的开发必须在Mac设备上完成(当然,黑苹果应该也是可以的,但就需要花很多的精力去折腾基础环境),Xcode是一个集成开发环境,包括了编辑器.调试.模拟器等等一系列方便开发和部署的工具,iOS SDK则是开发应用所必需,不同的SDK分别对应不同的iOS版本或设备,通常我们需要下载多个iOS SDK以确保我们开发的程序能够在不同版本的iOS上正常运行. 创建新工程 Xcode提供了很多种工程模

Python学习笔记基础篇——总览

Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列表.字典.主文件判断.对象 Python学习笔记——基础篇1[第三周]——set集合 Python学习笔记——基础篇2[第三周]——计数器.有序字典.元组.单(双)向队列.深浅拷贝.函数.装饰器 Python学习笔记——基础篇[第四周]——迭代器&生成器.装饰器.递归.算法.正则表达式 Python

Python学习笔记——基础篇【第六周】——面向对象

Python之路,Day6 - 面向对象学习 本节内容: 面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法. 面向对象编程(Object-Oriented Programming )介绍 对于编程语言的初学者来讲,OOP不是一个很容易理解的编程方式,大家虽然都按老师讲的都知道OOP的三大特性是继承.封装.多态,并且大家也 都知道了如何定义类.方法等面向对象的常用语法,但是一到真正写程序的时候,还是很多人喜欢用函数式编程来写代码,特别是初学者,很容易陷入一

thymeleaf 学习笔记-基础篇(中文教程)

转自: http://www.cnblogs.com/vinphy/p/4674247.html (一)Thymeleaf 是个什么? 简单说, Thymeleaf 是一个跟 Velocity.FreeMarker 类似的模板引擎,它可以完全替代 JSP .相较与其他的模板引擎,它有如下三个极吸引人的特点: 1.Thymeleaf 在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果.这是由于它支持 html 原型,然后在 h

渗透学习笔记--基础篇--sql注入(数字型)

环境:dvwa 1.7数据库:mysql dvwa的安全等级:medium 一.分析和查找注入点(1)知识点回顾如果上一篇有好好读过的同学应该知道,我们上一篇遇到的字符型注入.也即是通过Get或者Post方式传进去的数据被单引号或者双引号包裹住.如果我们想要注入自己的payload(有效载荷)的话,则我们必须先闭合前面的单引号或者双引号,否则我们的数据始终会被当做成字符串来处理. 这种类型的注入点称为字符型注入点. (2)这次我们的把防御等级提升了一个层次,来逐步加强我们手工注入的能力以及开更多

Python学习笔记——基础篇【第四周】

本节大纲 1.迭代器&生成器 2.装饰器 a.基本装饰器 b.多参数装饰器 3.递归 4.算法基础:二分查找.二维数组转换 5.正则表达式 6.常用模块学习 7.作业:计算器开发 a.实现加减成熟及括号优先级解析 b.用户输入1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式,运算后得出结果,结果必须与真实的计算器所得出的结果一致 迭代器&

OpenDaylight开发学习笔记基础篇

一 .摘要 本文主要针对 Openflowjava 部分进行实例简述,初学者需要对 java 了解一些,总结一些我自己的学习收获,不足之处请指正. Openflowjava工程作为 Opendaylight 南向接口的协议栈存在,与openflowplugin 工程及外部的 netty.io 网络库紧密联系.其主要作用是接受南向接口上报的消息.解码.将其交给 Openflowplugin以便进一步上报以及接收Openflowplugin传达的发送消息的指令并将其编码为字节流从南向接口中发出.结构

Python学习笔记——基础篇【第一周】(未完待续)

学习Python目的: 1.学完之后,可以做开发运维监控.自动化软件.聊天软件.BBS.博客和网站. 2.投资自己,结识更多的朋友,变更更优秀的人 Python第一周笔记 Python语言介绍 python创始人Guido,荷兰人,Python源自他所挚爱的电视剧Monty Python's Flying Circus.Python编译器使用C语言实现,能够调用C语言库文件.1991年初,Python发布了第一个公开发行版. Python版本: Python1.0   1994年 python2