Widget代码讲解
参考:https://zhuanlan.zhihu.com/p/28225011
QT版本为5.12.4
1.main.cpp
#include "widget.h"
#include <QApplication> int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show(); return a.exec();
}
为了叙述方便,现约定:在以后的代码分析中,方括号中的数字代表行号,例如【1-3】表示第1行到第3行的代码。
【1】包含widget.h头文件,这是我们创建窗口类时,Qt自动为我们生成的头文件,且文件名都为小写。
【2】包含QApplication类。
【4-11】main函数。
【6】创建一个QApplication实例。
如果所创建的是一个窗口应用程序,那么必须要有且只有一个这样的实例,在创建QApplication实例后,会自动将指针赋值给Qt的全局变量qApp,如果想在其它地方使用QApplication实例,则可以直接调用qApp。
因为QApplication实例会进行大量的初始化工作,所以要在使用任何对象之前就创建QApplication实例,因此,main函数开头便创建了QApplication实例。
如果创建的是一个非窗口的应用程序,那么可以调用QCoreApplication来创建实例。
QApplication主要做以下事情(只需了解即可):
1:使用用户的桌面设置,初始化应用程序,例如窗口的调色板,字体等。
2:执行事件处理。
3:也可根据命令行参数,设置自己的内部状态。
4:制定窗口样式,颜色调配,文字国际化。
5:设置剪切板,管理鼠标事件。
【7-8】创建Widget实例,并显示。
【10】进入Qt的主循环事件。当调用exit()函数时,才会退出循环,退出main函数。当程序在准备退出主循环时,会发出aboutToQuit()信号,如果有某些在退出程序前要处理的事情,可链接此信号进行处理。除了主循环外,Qt还有本地循环,可以理解为子循环,这个会在后面的讲解中讲述。
2.widget.h
#ifndef WIDGET_H
#define WIDGET_H #include <QWidget> namespace Ui {
class Widget;
} class Widget : public QWidget
{
Q_OBJECT public:
explicit Widget(QWidget *parent = nullptr);
~Widget(); private:
Ui::Widget *ui;
}; #endif // WIDGET_H
【6~8】定义命名空间Ui
【10】Widget公有继承QWidget,这样我们就可以调用QWidget提供的方法。QWidget是所有Qt窗口控件的基类,一般情况自定义窗口控件都应该继承QWidget或其子类。
【12】Q_OBJECT宏,必须在类的私有声明中声明这个宏,这样就可以使用Qt的信号槽机制,元对象系统,对象树等Qt特有的功能,否则无法使用。所以这里推荐在创建类时,最好加上此声明,这样的代码会得到很多Qt提供的便利接口。
【15】构造函数,其中parent参数,可指定父窗口。
【19】ui界面对象指针,凡是需要ui界面中的控件对象指针,都可以通过这个指针来进行调用访问。
3.widget.cpp
#include "widget.h"
#include "ui_widget.h" Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
} Widget::~Widget()
{
delete ui;
}
【5】如果有参数parent不为空,则Widget会成为该指针所指窗口的子窗口
【6】创建Ui::Widget界面对象,并将指针赋值给ui,创建的对象会在析构函数中释放
【8】设置ui界面
Widget代码讲解的更多相关文章
- 第二章--Win32程序运行原理 (部分概念及代码讲解)
学习<Windows程序设计>记录 概念贴士: 1. 每个进程都有赋予它自己的私有地址空间.当进程内的线程运行时,该线程仅仅能够访问属于它的进程的内存,而属于其他进程的内存被屏蔽了起来,不 ...
- 『HTML5实现人工智能』小游戏《井字棋》发布,据说IQ上200才能赢【算法&代码讲解+资源打包下载】
一,什么是TicTacToe(井字棋) 本游戏为在下用lufylegend开发的第二款小游戏.此游戏是大家想必大家小时候都玩过,因为玩它很简单,只需要一张草稿纸和一只笔就能开始游戏,所以广受儿童欢迎. ...
- Java生鲜电商平台-生鲜电商高并发下的接口幂等性实现与代码讲解
Java生鲜电商平台-生鲜电商高并发下的接口幂等性实现与代码讲解 说明:Java生鲜电商平台-生鲜电商高并发下的接口幂等性实现与代码讲解,实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返 ...
- faster RCNN(keras版本)代码讲解(3)-训练流程详情
转载:https://blog.csdn.net/u011311291/article/details/81121519 https://blog.csdn.net/qq_34564612/artic ...
- 毕业设计java实验室预约管理系统SSH机房预约系统javaweb机房实验室排课系统mysql机房管理系统 实验室管理系统 课程设计 代码讲解 调试运行
毕业设计java实验室预约管理系统SSH机房预约系统javaweb机房实验室排课系统mysql机房管理系统 实验室管理系统 课程设计 代码讲解 调试运行 注意:该项目只展示部分功能,如需了解,评论区咨 ...
- 代码讲解Android Scroller、VelocityTracker
在编写自定义滑动控件时常常会用到Android触摸机制和Scroller及VelocityTracker.Android Touch系统简介(二):实例详解onInterceptTouchEvent与 ...
- CUDA学习,第一个kernel函数及代码讲解
前一篇CUDA学习,我们已经完成了编程环境的配置,现在我们继续深入去了解CUDA编程.本博文分为三个部分,第一部分给出一个代码示例,第二部分对代码进行讲解,第三部分根据这个例子介绍如何部署和发起一个k ...
- 李宏毅 Gradient Descent Demo 代码讲解
何为梯度下降,直白点就是,链式求导法则,不断更新变量值. 这里讲解的代码为李宏毅老师机器学习课程中 class 4 回归展示 中的代码demo Loss函数 python代码如下 import n ...
- 图像匹配 | NCC 归一化互相关损失 | 代码 + 讲解
文章转载自:微信公众号「机器学习炼丹术」 作者:炼丹兄(已授权) 作者联系方式:微信cyx645016617(欢迎交流共同进步) 本次的内容主要讲解NCCNormalized cross-correl ...
随机推荐
- JS定时循环
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- LTM加速优化特性
TCP Express TCP Express 是 LTM 产品的一项重要特性. 借助 TCP Express,LTM 可分别为客户机端和服务器端创建独立的连接.这样一来,LTM 可以针对客户机连接和 ...
- 防火墙firewalld 案例1.内网请求转发到外网
环境: 内网应用服务端口流量需要转发请求到外网端口 解决思路: firewalld 的富规则 d主机: 富规则 d主机对外dnat发布5423端口,然后dnat请求s的80端口: s主机snat返回8 ...
- Jackson和fastjson简单用法及性能对比
背景: Java处理JSON数据有三个比较流行的类库FastJSON.Gson和Jackson.fastjson是阿里做的国有开源Java工具包,jackson是spring mvc内置的json转换 ...
- new 做了什么
var a=function(){ this.che1 = function () { console.log(1) } this.che2 = function () { console.log(2 ...
- (59)Linux操作系统深入应用
目录: 第一部分:嵌入式的含义 第二部分:DOS命令 第三部分:linux的发展历史(与unix的关系) 第四部分: 基于ubuntu下的linux命令详解大全 第一部分:嵌入式的含义 ...
- Spring Cloud Stream教程(三)持续发布 - 订阅支持
应用之间的通信遵循发布订阅模式,其中通过共享主题广播数据.这可以在下图中看到,它显示了一组交互式的Spring Cloud Stream应用程序的典型部署. 图6. Spring Cloud Stre ...
- java复制项目中的补丁,完整的包路径
package com.bytter.audit.iface.util; import java.io.BufferedInputStream; import java.io.BufferedOutp ...
- java 用redisTemplate 的 Operations存取list集合
一 .存取为list类型 @RestController @RequestMapping("/test") @Slf4j public class TestController { ...
- nginx请求转发配置
以下为无ssl证书配置的请求转发 server { listen ; server_name api.****.com; #以下为指定请求域名匹配到某一个端口 #location ~* /union ...