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

DoubleLi DoubleLi     2022-08-23     477

关键词:

本文基于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()设置一个不同的初值。

pandas高级数据分析快速入门之二——基础篇(代码片段)

Pandas高级数据分析快速入门之一——Python开发环境篇Pandas高级数据分析快速入门之二——基础篇Pandas高级数据分析快速入门之三——统计分析篇Pandas高级数据分析快速入门之四——表内、表间数据处理篇Pandas高级数据分析快速入... 查看详情

自入门--leaflet学习笔记

...是简单的知识点整理及QuickStart,望dalao们批评指正!leaflet的快速开始向导: 这篇循序渐进的引入文将快速的让你开始学习leaflet的基础内容,包含了创建一个使用标记,气泡点,多段线的用来处理事件的leaflet地图.http://leafletjs.com/examp... 查看详情

qt入门之基础篇(二):qt项目建立编译运行和发布过程解析

...主讲Qt应用从创建到发布的整个过程,旨在帮助读者能够快速走进Qt的世界。  本来计划是讲解Qt源码静态编译,如此的话读者可能并不能清楚地知道为何要静态编译,所以借此篇内容说明一下原由并为之后文章的学习做准备。... 查看详情

pandas高级数据分析快速入门之五——机器学习特征工程篇(代码片段)

Pandas高级数据分析快速入门之一——Python开发环境篇Pandas高级数据分析快速入门之二——基础篇Pandas高级数据分析快速入门之三——数据挖掘与统计分析篇Pandas高级数据分析快速入门之四——数据可视化篇Pandas高级数据分析快速... 查看详情

pandas高级数据分析快速入门之五——机器学习特征工程篇(代码片段)

Pandas高级数据分析快速入门之一——Python开发环境篇Pandas高级数据分析快速入门之二——基础篇Pandas高级数据分析快速入门之三——数据挖掘与统计分析篇Pandas高级数据分析快速入门之四——数据可视化篇Pandas高级数据分析快速... 查看详情

pandas高级数据分析快速入门之六——机器学习预测分析篇(代码片段)

Pandas高级数据分析快速入门之一——Python开发环境篇Pandas高级数据分析快速入门之二——基础篇Pandas高级数据分析快速入门之三——数据挖掘与统计分析篇Pandas高级数据分析快速入门之四——数据可视化篇Pandas高级数据分析快速... 查看详情

javascript学习基础篇第1篇:javascript入门

JavaScript快速入门JavaScript代码可以直接嵌在网页的任何地方,不过通常我们都把JavaScript代码放到<head>中,由<script>...</script>包含的代码就是JavaScript代码,它将直接被浏览器执行。第二种方法是把JavaScript代码放到一... 查看详情

pandas高级数据分析快速入门之一——python开发环境篇

Pandas高级数据分析快速入门之一——Python开发环境篇Pandas高级数据分析快速入门之二——基础篇Pandas高级数据分析快速入门之三——数据挖掘与统计分析篇Pandas高级数据分析快速入门之四——数据可视化篇Pandas高级数据分析快速... 查看详情

qt博客汇总

...录,可以评论提醒一下或者评论邮箱发你。一、Qt基础1.1快速入门Qt快速入门之一:开始学习Qt与QtCreatorQt快速入门之二:QtCreator简介Qt快速入门之三:Qt项目建立、编译、运行和源码详解Qt应用程序主窗口之一:主窗口框架Qt应用... 查看详情

pandas高级数据分析快速入门之四——数据可视化篇(代码片段)

Pandas高级数据分析快速入门之一——Python开发环境篇Pandas高级数据分析快速入门之二——基础篇Pandas高级数据分析快速入门之三——数据挖掘与统计分析篇Pandas高级数据分析快速入门之四——数据可视化篇Pandas高级数据分析快速... 查看详情

给深度学习入门者的python快速教程-numpy和matplotlib篇

本篇部分代码的下载地址:https://github.com/frombeijingwithlove/dlcv_for_beginners/tree/master/chap5上篇:给深度学习入门者的Python快速教程-基础篇5.3Python的科学计算包-Numpynumpy(Numerical Pythonextensions)是一个第三方的Python包ÿ 查看详情

pandas高级数据分析快速入门之三——数据挖掘与统计分析篇(代码片段)

Pandas高级数据分析快速入门之一——Python开发环境篇Pandas高级数据分析快速入门之二——基础篇Pandas高级数据分析快速入门之三——数据挖掘与统计分析篇Pandas高级数据分析快速入门之四——数据可视化篇Pandas高级数据分析快速... 查看详情

python基础篇:python基础知识,帮助初学者快速入门(代码片段)

...编程语言。本文将介绍`Python`的基础知识,以帮助初学者快速入门。Python是一种高级编程语言,它易于学习和使用,因此成为了许多人的首选编程语言。本文将介绍Python的基础知识,以帮助初学者快速入门。安装Python在开始学习P... 查看详情

c语言学习笔记-入门整合篇(十万字长文)(代码片段)

(该篇学习内容全部来自于C语言中文网,本篇内容仅仅是简易学习笔记,以自己的理解+网站部分描述结合+个人补充,并不适合编程初学者观看!!!需要有一定的编程基础)数据在内存中存储内存条包含了上亿个电... 查看详情

学习笔记:javascript-入门篇

1.对话框,输出框,警告框 1.document.write() 可用于直接向HTML输出流写内容。简单的说就是直接在网页中输出内容。 2.alert(字符串或变量); 3.confirm消息对话框通常用于允许用户做选择的动作,如:“你对吗?”等。... 查看详情

qt应用程序开发框架-快速入门篇(代码片段)

文章目录一.Qt介绍及安装二.QtCreator介绍三.QtDesigner介绍四.Qt信号和槽一.Qt介绍及安装Qt是一个1991年由QtCompany开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制... 查看详情

大数据学习笔记~linux基础篇

...     2.复制粘贴        3.查找字符串        4.快速删除        5.查找某一行内容        6.快速跳到文件首行和末行        7.如果在编辑的时候,意外退出     c、文件统计相关命令           ... 查看详情

组件快速入门

前言最近开始在学vue相关的内容。组件这章的内容比较多。看了http://www.cnblogs.com/keepfool/p/5625583.html这篇博客,博主总结的还比较全面也挺清晰,可是这篇博客的知识点跟实例都是基于vue1.0版本的,所以参考这篇博客,我将vue2.0... 查看详情