当前位置: 首页 > news >正文

扁平化 公司网站珠海seo关键词排名

扁平化 公司网站,珠海seo关键词排名,怎么用织梦做购物网站,共享经济网站建设策划书目录 一、使用Qt Creator创建qt项目 二、项目文件解析 三、Qt中创建图形化界面的程序的两种方法 四、对象树 五、Qt中处理打印乱码问题的利器:qDebug() 一、使用Qt Creator创建qt项目 1.选择项目模板 选中第一类模板Application(Qt应用程序,包含普…

目录

一、使用Qt Creator创建qt项目

二、项目文件解析

三、Qt中创建图形化界面的程序的两种方法

四、对象树

五、Qt中处理打印乱码问题的利器:qDebug()


一、使用Qt Creator创建qt项目

1.选择项目模板

选中第一类模板Application(Qt应用程序,包含普通窗体程序和QtQuick程序), 然后选中右侧的第一个子模版:Qt Widgets Application(普通窗体模板,基于部件的窗体界面程序)。

2.选择项目路径

 注意:qt项目所在的路径不能包含中文!

 3.选择构建系统

选中qmake。

qmake:是一个构建工具(build tool),支持跨平台构建,用于自动生成makefile文件。qmake用于编辑后缀为.pro的文件。

cmake:是一个跨平台构建工具,本身不是编译器。

4.选择qt项目中自动生成父类的类型

 

使用Qt Creator创建qt项目的中会自动生成一些代码,自动生成的代码中就包含一个类,此处就是选择该类的父类(Qt中内置的类)是什么。qt自动生成的父类默认有三种:

QMainWindow:主窗口类,表示一个完整的应用程序窗口。可以包含菜单栏、工具栏、状态栏等。

QWidget:最简单最基本的窗体程序,里面可以有多个控件实现程序功能。

QDialog:表示一个对话框。

上面三种类的关系:

QMainWindow和QDialog都是QWidget的派生类。

注意:Qt中内置的类都是以Q为前缀开头的。

二、项目文件解析

以qt自动生成的默认父类是Qwidget来分析:

后缀为.pro的文件:工程文件。工程新建好后,文件列表中有一个以.pro为后缀的文件,它是qmake自动生成的文件是用来生成makefile文件的。

widget.h:主要是声明Widget类(Widget类继承自QWidget),其中Widget类中的成员变量是命名空间Ui中的类,该类将在ui_widget.h中继承Ui_Widget类。

main.c:用于构造Widget类,并执行其相应的方法。

widget.cpp:用于实现Widget类(实现构造函数、析构函数、其他成员函数)该文件会包含头文件"widget.h"和"ui_widget.h"。注意:在Widget类的构造函数中创建控件对象。

widget.ui:其实是一个xml文件,qt会根据UI设计器中的控件帮我们在该文件中生成相应的内容。

ui_widget.h:该文件中包含类Ui_Widget的声明和定义,当我们通过拖拽控件生成图形界面时,比如拖拽了一个Label控件,然后此时widget,ui文件就会生成相应的Label控件的信息,在编译期间,qt会根据widget.ui中关于Label控件的信息在ui_widget.h中生成关于该Label控件的代码,然后执行生成图形化界面。

三、Qt中创建图形化界面的程序的两种方法

这里创建一个简单的Label控件。

1.直接使用C++代码的方式创建界面。

Qt中一些容器的头文件基本都被内置,当我们使用QString,QVector(封装C++中的容器类)等时不必包含其头文件。

2.使用图形化方式。通过form file(也就是使用Qt Designer拖拽控件的方式或直接在Qt Creator中修改.ui文件来生成图形界面)。

.ui文件其实是一个xml格式文件qmake在编译期间根据这个xml文件会在ui_widget.h文件中生成生成一些C++代码,从而构造出完整的图形界面。

四、对象树

上面我们在堆上new了一个Label类但是没有释放空间,会造成内存泄露吗?答案是不会的。

在Qt中的对象树会把我们在堆上new的各个控件组织起来,目的是为了把这些控件对象的生命周期由对象树统一管理,统一释放这些控件。

如果在栈上创建控件对象那么就会导致对象提前销毁,当main.c中要执行w.show(),此时w的构造函数执行完毕,在栈上创建的控件对象已析构销毁,无法显示该Label控件内容。

注意:new对象的时候一定要将this指针传入到创建的控件对象中,这样才可以将该控件挂在对象树上。

验证对象树是否会自动释放它组织的控件对象:

我们现在要自己创建一个MyLabel类该类继承自QLabel类,并且MyLabel类的析构函数里有打印信息的代码,用以验证MyLabel是否析构。

新建一个qt项目:TestObjectTree

然后在该项目中让qt帮我们生成一个继承自QLabel的类:

 

然后将这个继承自QLabel的类挂到对象树上:

 当我们运行程序会生成一个窗体控件,该窗体控件(其实就是QWidget类)里面有标签控件的内容,然后我们关闭该窗体控件,终端就会打印出MyLabel类对象析构函数中的内容,因此证明由对象树组织的控件会被同意释放。

五、Qt中处理打印乱码问题的利器:qDebug()

在qt中当我们使用C++中的打印中文时,会出现乱码问题。这是由于字符编码一致导致的。

常见的字符编码集:

GBK:一个汉字占2个字节(Windows下的默认字符编码集)。

UTF-8/utf8:一个汉字一般占3个字节(Linux下的默认字符编码集)

在vs2019中,使用的是Windows下的默认字符编码集GBK:

在Windows环境下qDebug()可以处理字符编码集不同导致的乱码问题,因此在qt中我们以后就使用qDebug()输出日志/或打印信息,而不是使用cout。

在Linux中开发Qt程序时也可以使用cout,因为Linux默认字符编码集是utf8和qt相同。

注意:使用qDebug()时要包含头文件#include <QDebug>

使用qDebug()还有一个好处就是打印的调试日志可以统一关闭或打开。

http://www.hkea.cn/news/556870/

相关文章:

  • 帮境外赌场做网站是否有风险百度企业号
  • 网站换了服务器百度seo排名优化公司哪家好
  • 海南网站建设制作网络营销效果评估
  • 飞阳建设网站上海广告公司
  • 营销网站导航栏常见网站搜索排名靠前
  • 深圳市政府网站官网百度地图疫情实时动态
  • 上海建设工程咨询网 首页深圳优化排名公司
  • 杭州哪个网站建设最好做网站的网络公司
  • 制作一个网站步骤东莞网络营销销售
  • 专业的营销网站建设公司百度联盟注册
  • 机械类网站用什么做背景指数运算法则
  • 微信如何绑定网站加速游戏流畅的软件
  • 茂名整站优化百度问答首页
  • 手机网站搭建网络宣传方式
  • 2003网站建设网站seo哪家公司好
  • 成都学校网站制作2022年国际十大新闻
  • 工厂外贸网站建设台州网络推广
  • 酒店网站建设方案策划百度seo怎么做网站内容优化
  • 网站更改公司需要重新备案吗搜索网页内容
  • 现在做网站还用dw做模板了吗成人电脑速成培训班
  • 做app要不要建网站刚开的店铺怎么做推广
  • 做生存分析的网站有哪些专业的网站优化公司
  • 网站双倍浮动百度联盟app
  • 北京网站设计确保代码符合w3c广州网络营销的推广
  • 做网站实名认证有什么用百度移动端模拟点击排名
  • 知更鸟wordpress 怎样沈阳百度seo关键词优化排名
  • 携程网站模板互联网营销策略有哪些
  • 做网站内链什么意思上海排名优化seobwyseo
  • 四川做直销会员网站百度网盘帐号登录入口
  • 做百度竞价对网站有无要求网站推广排名服务