【Qt】第一、二章:Qt Creator介绍及Hello World程序示例

SDAU学子一枚,从此开始了进行关于Qt的总结复习。

第一章

Qt是一个多平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能。其中包括了高级C++代码编辑器、项目和生成管理工具、集成的上下文相关的帮助系统、图形化调试器、代码管理和浏览工具等。

一、Qt支持平台

  1. MS/Windows - 95、98、NT 4.0
  2. Unix/X11 - Linux、Sun Solaris、HP-UX、Compaq Tru64 UNIX、IBM AIX、SGIIRIX和其它很多X11平台
  3. Macintosh -Mac oS x
  4. Embedded - 有帧缓冲(framebuffer)支持的Linux平台。

二、Qt下载与安装

地址: https://download.qt.io/archive/qt/
参考文章:Qt下载安装教程
点击绿色的5.9/,就可以进入下载5.9版本的Qt软件啦,下载文件:qt-opensource-windows-x86-5.9.6.exe后双击安装。
首先出现的是欢迎界面,单击“下一步”按钮,并选择登陆或者注册Qt账号。这一步并不影响程序的安装,所以直接单击Skip按钮跳过。在选择组件界面可以选择安装一些模块,建议保持默认选择。后面的过程按照默认设置即可。

三、Qt环境介绍及帮助文档的使用

1.双击打开Qt:界面如图所示。它主要由主窗口区、菜单栏1、模式选择器2、构建套件选择器3﹑定位器4和输出窗格5等部分组成。
Qt界面
2.帮助文档:方法1是选择菜单栏中的帮助即可打开;或者是在对应类或函数处按F1即可打开对应的文档说明。

四、Qt的优缺点

Qt优势

优良的跨平台特性: 只要不涉及系统级别的功能实现,一般情况下Qt的跨平台表现良好,修改率很低。小编工作中经常需要操作Windows底层功能,导致产品一直未能做到跨平台。
开发效率高: 此开发效率是相对总体而言,在C++类型的框架中,Qt的应用程序开发效率绝对算高的,当然与Web开发方式相比还是有些劣势。基础UI开发部分有QWidget方式、布局管理与qss效果实现,快速UI开发如Quick与QML,特别之处如信号槽的机制,同时配合Qt Creator这个合适的IDE,这些都对开发效率有明显提升。如若在嵌入式平台,采用Qt开发绝对可以是首选。
强大的图形视图框架: 此处不是指Qt widgets的内容,是Graphics View Framework。一般的UI开发性能差异不明显,当有成千上万个Item以及涉及超大场景的功能设计时,图形视图框架仍然可以应对自如。文档说可以包含数百万个Item,曾经做过测试,确实所言非虚。

Qt劣势

信号槽的效率问题: 信号槽的性能问题一般情况下较难感知,但在延时敏感的功能中,如需要计算时间戳、或涉及听觉视觉的功能,过多的信号槽可以带来明显的延时,此种情况中,采用回调方式更可取。
效率的问题主要是Qt信号槽机制涉及函数查找及参数传递,其中包含了链表操作、事件处理以及线程中锁部分的处理。
Qt的UI绘制、事件传递、网络模块等功能,都非常依赖信号槽机制,这也同时意味着Qt的运行效率如果深究起来,可能算不得优异。但由于是C++框架,性能终归不属于太差。
网络模块的性能问题: Qt network模块性能差强人意,前文提到了信号槽机制的影响,此外并发和数据传输性能均较低,这与Qt底层机制与架构有关。使用Qt网络模块开发小型功能没问题,大型系统可选用其他库,毕竟C++相关的网络库非常多。
Qt Widgets 性能问题: 前文提到了信号槽的问题,由于Qt widgets中涉及大量的绘图、事件等的信号传递,这是对效率的一大影响;此外Qt widgets图像渲染都是自绘,不存在硬件加速,如若场景变的复杂,性能会有明显的影响。虽然Quick与QML可以支持硬件加速,支持OpenGL,图形渲染性能也非常强悍,但Quick和QML存在硬件兼容的问题。

第二章

一、示例 Hello World程序的编写

1.利用ui文件编写

步骤:

  • 新建Qt Widgets应用
    第一步,选择项目模板。选择“文件→新建文件或项目”菜单项(或者单击欢迎模式中的New Project按钮),在选择模板页面选择Application中的Qt Widgets Application项,然后单击Choose按钮。
    第二步,输入项目名(hello world)、选择源码路径(注意项目名和路径不能有中文)。
    第三步,选择构建套件。
    第四步,选择类信息,基类选择QDialog类,然后下一步->完成。
  • 在Qt Creator的编辑模式下双击项目文件列表中界面文件分类下的hellodialog.ui文件,这时便进入了设计模式。可以看到,设计模式由以下几部分构成:
    1.主设计区。
    2.部件列表窗口(Widget Box)。
    3.对象查看器(Object Inspector)。
    4.属性编辑器(Property Editor)。
    5.动作(Action)编辑器与信号和槽编辑器。
    下面从部件列表中找到Label(标签)部件,然后按住鼠标左键将它拖到主设计区的界面上,再双击它进人编辑状态后输入“Hello World!”字符串,保存后运行即可。

2.纯代码编写

步骤:

  • 新建文件同上述步骤(可不勾选创建ui界面)
  • 将main.cpp代码改为:
#include <QApplication >
#include <QDialog>
#include<QLabel>
int main( int argc,char * argv[])
{
QApplication a(argc,argv);
QDialog w;
w.resize(400,300);
QLabel label(&w);
label.move(120,100);
label.setText( "Hello world!");
w.show();
return a.exec();
}

代码说明:

  • 新建了QApplication类对象,用于管理应用程序的资源,任何一个 Qt Widgets程序都要有一个QApplication对象。因为Qt程序可以接收命令行参数,所以它需要argc和argv两个参数。
  • 新建了一个 QDialog对象,QDialog类用来实现一个对话框界面。
  • 新建了一个QLabel对象,并将QDialog对象作为参数,表明了对话框是它的父窗口,也就是说这个标签放在对话框窗口中。
  • 在默认情况下,新建的可视部件对象都是不可见的,所以用show()函数显示出来。
  • 最后一行让QApplication对象进入事件循环,这样当Qt应用程序运行时便可以接收产生的事件,例如单击和键盘按下等事件。

二、程序的发布与运行

程序已经编译完成后,那么如何发布它,让它在别人的计算机上也能运行?前面生成的debug版本程序依赖的dll文件很大,那是因为debug版本程序中包含了调试信息,可以用来调试。而真正要发布程序时要使用release版本。
步骤:

  1. 在左下角的构建套件选择器中将构建目标设置为Release,然后单击运行图标。编译完成后再看项目目录中E:\build-helloworld-Desktop_Qt_5_6_l_MinGW_32bit-Release文件夹(找自己对应的release文件夹)的release目录,其中已经生成了helloworld,exe文件。
  2. 如果要使Release版本的程序可以在别人的计算机上运行,还需要将几个dll文件与其一起发布。可以在桌面上新建一个文件夹,重命名为“MyQt程序”,然后将release文件夹中的helloworld.exe复制过来,再去Qt安装目录的bin目录中将libgcc_s_dw2-1.dll、libstdc+±6.dll , lib-winpthread-1.dll,Qt5Core.dll、Qt5Gui.dll 和Qt5Widgets.dll这6个文件复制过来。
  3. 将C:\Qt\Qt5.6.1\5.6\mingw49_32\plugins目录中的 platforms文件夹复制过来(不要修改该文件夹名称),里面只需要保留qwindows.dll 文件即可。这时就可以将压缩包发布出去了。

三、项目文件的说明

pro文件截图
说明:

  • Qt +=表明这个项目使用的模块。core模块包含了Qt的核心功能,其他所有模块都依赖于这个模块;gui模块提供了窗口系统集成、事件处理、OpenGL和OpenGL ES集成、2D图形、基本图像、字体和文本等功能。
  • 当使用qmake工具来构建项目时, core模块和gui模块是被默认包含的。
  • FORMS、HEADERS、SOURCES分别是包含的源文件、头文件和界面文件。

备注

参考书目: Qt Creator快速入门第三版霍亚飞编著-北京航空航天大学出版社

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/52056.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt 5框架介绍

该文章原创于Qter开源社区&#xff08;www.qter.org&#xff09;&#xff0c;作者 yafeilinux&#xff0c;转载请注明出处&#xff01; 一、在帮助中查看所有模块 打开 Qt Creator&#xff0c;进入其帮助模式&#xff0c;然后选择目录方式进行查看&#xff0c;打开 “Qt 5.2.…

Qt学习笔记(三十):Qt 中的绘图

一、QPainter&#xff1a;绘图对象 Qt 的绘图系统允许使用相同的 API 在屏幕和其它打印设备上进行绘制。整个绘图系统基于 QPainter&#xff0c;QPainterDevice 和 QPaintEngine 三个类。 QPainter 用来执行绘制的操作&#xff08;相当于画家&#xff09;&#xff1b; QPain…

【Qt入门第16篇】 2D绘图(六)坐标系统

导语 前面一节我们讲解了图片的显示&#xff0c;其中很多地方都用到了坐标的变化。这一节我们将讲解Qt的坐标系统&#xff0c;分为两部分来讲解&#xff1a;第一部分主要讲解前面一节的那几个函数&#xff0c;它们分别是translate()平移变换、scale()比例变换、rotate()旋转变…

使用Qt进行程序开发的过程记录

目录 一、qt的安装 二、resources文件的使用 三、Qt中各种设置问题 四、在子页面的简单图表显示 五、Qt发布独立运行的exe的方法 六、Qt创建子页面的方法 七、Qt中使用菜单栏的方法 八、Qt联合C进行文件读取、写入操作 九、Qt关闭窗口函数 十、提示窗口与调试功能的使…

Qt开发技术:Qt绘图系统(二)QPainter详解

若该文为原创文章&#xff0c;未经允许不得转载 原博主博客地址&#xff1a;https://blog.csdn.net/qq21497936 原博主博客导航&#xff1a;https://blog.csdn.net/qq21497936/article/details/102478062 本文章博客地址&#xff1a;https://blog.csdn.net/qq21497936/article/…

Qt绘图与信号事件

Qt应用开发的基本模式(面向对象) 继承QDailog gkdialog.h #ifndef GK_DIALOG_H #define GK_DIALOG_H #include <QtWidgets/QDialog>class GKDialog: public QDialog{ public:GKDialog(QWidget *parent0);~GKDialog(); }; #endifgkdialog.cpp #include "gkdialog…

我的Qt作品(9)Qt使用Cairo绘图引擎提升抗锯齿效果【开源】

之前写了一篇文章《Qt使用GDI绘图&#xff08;仅Windows平台&#xff09;》 Qt使用GDI绘图&#xff08;仅Windows平台&#xff09;_libaineu2004的博客-CSDN博客 本篇重点介绍Cairo绘图引擎&#xff0c;Qt自带的QPainter的绘图效率和抗锯齿效果都没有cairo的好。cairo 的目标…

基于Qt的多媒体综合应用程序设计(2)

框架结构图等 1.多媒体综合应用程序设计思路 首先创建一个Qt Widgets Application程序,在头文件中完成类、函数及变量的设置,在程序窗口中添加相应的控件,利用控件的属性和方法分别实现文字处理程序跳转、绘图程序跳转、图像处理程序跳转、音频播放器跳转、视频播放器跳转和…

VS+Qt+鼠标框选后掩膜去除背景

前言&#xff1a; 实际采集的图片背景比较复杂&#xff0c;所以我想着采用框选矩形框掩膜的方式简单粗暴的消除背景对图片有用区域的干扰。网上搜索了一圈尝试了几种不同的方式去框选&#xff0c;最后发现还是Qt的鼠标事件比较容易上手。 效果图&#xff1a; 主要思路&#x…

QT—3D绘图

OpenGL是一个跨平台的、用来渲染3D图形的标准API,Qt对OpenGL提供了强大的支持。Qt4时代的QtOpenGL模块在Qt5中已经不再建议使用,OpenGL相关的类被移到了Qt GUI模块。Qt Widgets模块中的QOpenGLWidget类提供了一个可以渲染OpenGL图形的部件&#xff0c;通过该部件可以轻松地将Op…

【Qt】Qt环境配置与入门案例

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍Qt环境配置与入门。 学其所用&#xff0c;用其所学。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下次更新不迷路&…

(三)NI采集卡应用学习:在Qt中实现多路数据的同时采集、显示、绘图及存储

1、使用NI MAX创建多路输入的测量任务 本处设置Dev1/ai0:3四路电压输入&#xff0c;采样率均为100&#xff0c;差分连接。 2、代码 // 设置地址 void Widget::on_add_pushButton_clicked() {address_txt QFileDialog::getExistingDirectory(this, tr("Open Directory&q…

linux程序框架设计,《Linux与Qt程序设计》知识框架

本文主要是通过一本书来大致了解Qt开发的框架,不对具体内容做详细分析。 1.首先弄清楚概念:定义->以自己的话理解是什么-> 实现的是什么功能->用在哪些地方 2.前面认识到的知识点的特点-> 代码实现-> 工程代码分析 第一部分 Linux基础知识 第二部分 Qt程序基础…

QT开发应用程序(11)--图形绘制和文本输出

代码演示&#xff1a; #include <QPainter> MyDraw::MyDraw(QWidget *parent) :QWidget(parent) {QLinearGradient linearGradient(0,0,400,400);linearGradient.setColorAt(0.0,Qt::white);linearGradient.setColorAt(0.2,QColor(0,0,0));linearGradient.setColorAt(1.…

chatgpt赋能python:使用Python捕获错误:为您的代码添加可靠性

使用Python捕获错误&#xff1a;为您的代码添加可靠性 在编写Python代码时&#xff0c;错误很常见。您可能会因输入无效参数而收到TypeError&#xff0c;或者因无法连接到数据库而收到ConnectionError。当这些错误发生时&#xff0c;您的代码可能会崩溃或产生不正确的结果。尽…

chatgpt赋能python:关闭Python:如何优雅地退出一个Python程序

关闭Python&#xff1a;如何优雅地退出一个Python程序 Python作为一门开发语言&#xff0c;可以广泛应用于众多领域&#xff0c;如数据科学、人工智能、Web应用开发等等。但有时候&#xff0c;我们需要关闭一个正在运行的Python程序。本文将介绍如何优雅地退出一个Python程序&…

chatgpt赋能python:Python异常捕获存在的问题

Python 异常捕获存在的问题 作为一门广受欢迎、应用广泛的编程语言&#xff0c;Python 在处理异常方面有着比较完善的设计。Python 提供了 try…except…finally 这样的异常处理机制&#xff0c;通过这些机制&#xff0c;开发者可以捕获、处理程序中产生的异常&#xff0c;从而…

yagmail——快速发送邮件

yagmail——快速发送邮件 目标&#xff1a;如何利用python中的yagmail包&#xff0c;快速发送邮件。 python写的一个简单demo脚本代码如下&#xff1a; import yagmail import pandas as pd from loguru import logger# 保存excel文件 contents pd.DataFrame() contents[&quo…

电脑和微信怎么发邮件到别人邮箱,企业邮箱如何发email给别人

邮箱已成为主流的办公软件&#xff0c;除了日常的电脑办公使用以外&#xff0c;你知道还有哪些便捷的方式使用邮箱吗&#xff1f;现在是互联网时代&#xff0c;许多邮箱都研发了手机邮箱配合使用&#xff0c;那TOM企业邮箱有哪些便捷的服务呢&#xff1f;一起看看吧&#xff01…

怎么发送电子邮件到别人邮箱?手把手教你!

在日常生活中&#xff0c;我们在工作学习的时候都离不开电子邮件&#xff0c;无论两人的距离有多远&#xff0c;都是可以通过电子邮件的方式完成信息的即时传递。这样不仅可以传输文字信息&#xff0c;还能传输图片、视频等多种格式的信息。那么&#xff0c;怎么发送电子邮件到…