Qt---项目的创建及运行

一、创建第一个Qt程序

1. 点击创建项目后,选择项目路径以及给项目起名称

        名称:不能有中文、不能有空格
        路径:不能有中文路径
2. 默认创建有窗口类myWidget,基类有三种选择:QWidget、QMainWindow、QDialog
3. main函数
        QApplication a()        应用程序对象,有且仅有一个

        myWidget w;          实例化窗口对象
        w.show();               调用show函数显示窗口
        return a.exec();      让应用程序对象进入消息循环机制中,代码阻塞到当前行

#include "mywidget.h"#include <QApplication>//包含一个应用程序类的头文件//main程序入口  argc命令行变量数量 argv命令行变量的数组
int main(int argc, char *argv[])
{//a应用程序对象,在QT中,应用程序对象有且仅有一个QApplication a(argc, argv);//窗口对象  myWidget父类  ->  QWidgetmyWidget w;//窗口对象  默认不会显示,必须调用show方法显示窗口w.show();//让应用程序对象进入消息循环,阻塞在这行return a.exec();//    while(true)
//    {
//        if(点击叉子)
//        {
//            break;
//        }
//    }}

二、命名规范及快捷键

命名规范:
        类名    首字母大写,单词和单词之间首字母大写
        函数名   变量名称    首字母小写,单词和单词之间首字母大写
快捷键:       
        注释 ctrl + /
        运行 ctrl + r
        编译 ctrl + b
        字体缩放 ctrl + 鼠标滚轮
        查找 ctrl + f
        整行移动 ctrl + shift ↑或者↓
        自动对齐 ctrl + i
        同名之间的.h和.cpp切换 F4
        帮助文档 第一种方式F1  第二种:左侧按钮 第三种:绝对路径

三、QPushButton创建

按钮控件常用API:
        创建QPushbutton *btn= new QPushbutton
        设置父亲        setParent(this)
        设置文本        setText("文字")
        设置位置            move(宽,高)
        重新指定窗口大小        resize

        设置窗口标题        setWindowTitle
        设置窗口固定大小        setFixedSize

myWidget::myWidget(QWidget *parent):QMainWindow(parent)
{//创建一个按钮QPushButton *btn = new QPushButton;//btn->show();//show以顶层方式弹出窗口控件//让btn对象 依赖在myWidget窗口中btn->setParent(this);//显示文本btn->setText("第一个按钮");//按钮重新指定大小btn->resize(100,30);//创建第二个按钮   按照控件的大小创建窗口QPushButton *btn2 = new QPushButton("第二个按钮",this);//移动btn2按钮btn2->move(100,100);//重置窗口大小resize(600,400);//设置固定窗口大小setFixedSize(600,400);//设置窗口标题setWindowTitle("第一个窗口");}

四、对象模型(对象树) 

        当创建的对象在堆区时,如果指定的父亲是QObject派生下来的类或者QObject子类派生下来的类,可以不用管理释放的操作,会将对象放入到对象树中。

        一定程度上简化了内存回收机制。

mypushbutton.h 

#ifndef MYPUSHBUTTON_H
#define MYPUSHBUTTON_H#include <QPushButton>class MyPushButton : public QPushButton
{Q_OBJECT
public:explicit MyPushButton(QWidget *parent = nullptr);~MyPushButton();signals:};#endif // MYPUSHBUTTON_H

mypushbutton.cpp

#include "mypushbutton.h"
#include<QDebug>MyPushButton::MyPushButton(QWidget *parent) : QPushButton(parent)
{qDebug()<<"我的按钮类构造调用";
}
MyPushButton::~MyPushButton()
{qDebug()<<"我的按钮类析构";
}

mywidget.cpp

#include "mywidget.h"
#include"QPushButton"   //按钮控制的头文件
#include"mypushbutton.h"
#include<QDebug>myWidget::myWidget(QWidget *parent):QMainWindow(parent)
{//创建一个按钮QPushButton *btn = new QPushButton;//btn->show();//show以顶层方式弹出窗口控件//让btn对象 依赖在myWidget窗口中btn->setParent(this);//显示文本btn->setText("第一个按钮");//按钮重新指定大小btn->resize(100,30);//创建第二个按钮   按照控件的大小创建窗口QPushButton *btn2 = new QPushButton("第二个按钮",this);//移动btn2按钮btn2->move(100,100);//重置窗口大小resize(600,400);//设置固定窗口大小setFixedSize(600,400);//设置窗口标题setWindowTitle("第一个窗口");//创建一个自己的按钮对象MyPushButton *myBtn = new MyPushButton;myBtn->setText("我自己的按钮");myBtn->move(200,0);myBtn->setParent(this);//设置到对象树中myBtn.resize(100,30);
}myWidget::~myWidget()
{qDebug()<<"myWidget的析构调用";
}

输出:

底层逻辑:先析构我的按钮类再析构myWidget,只是打印顺序置为反

我的按钮类构造调用

myWidget的析构调用

我的按钮类析构

五、Qt中的坐标系

左上角为(0,0)点

x以右为正方向

y以下为正方向

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

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

相关文章

ssl证书免费申请指南

同学们可以私信我加入学习群&#xff01; 正文开始 前言一、购买证书二、创建证书三、 验证证书等待出现如下页面&#xff0c;说明申请成功&#xff1a; ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/6b6c1dd11d4c467687318552da7cdbb2.png) 总结 前言 今天为大…

企业必看:镭速教你如何测试内网文件传输效率和稳定问题

在现代商业运作中&#xff0c;企业内部文件传输的效率和稳定性对于数据管理和业务流程极为重要。无论是远程工作还是团队协作&#xff0c;高效的文件传输都能显著提升工作效率。今天镭速小编就教你如何测试内网文件传输效率和稳定问题。 1、磁盘性能&#xff0c;即硬盘的读取和…

类图及类的关系

类图&#xff08;Class Diagram&#xff09;是UML&#xff08;Unified Modeling Language&#xff0c;统一建模语言&#xff09;中的一种图&#xff0c;用于描述系统中类的静态结构&#xff0c;包括类的属性、方法以及类之间的关系。 一、类 类&#xff08;Class&#xff09;…

高级查询(一)

解决需求&#xff1a;Excel都可以轻松搞定 分组查询原理&#xff1a; 语法&#xff1a; SELECT …<列名> FROM <表名> [WHERE<条件表达式> ] GROUP BY 参与分组的列 可以与 聚合函数作用的列 一块显示 注意 SELECT列表中只能包含&#xff1a; 1、被分…

勒索软件漏洞?在不支付赎金的情况下解密文件

概述 在上一篇文章中&#xff0c;笔者对BianLian勒索软件进行了研究剖析&#xff0c;并且尝试模拟构建了一款针对BianLian勒索软件的解密工具&#xff0c;研究分析过程中&#xff0c;笔者感觉构建勒索软件的解密工具还挺有成就感&#xff0c;因此&#xff0c;笔者准备再找一款…

gin框架学习笔记(三) ——路由请求与相关参数

参数种类与参数处理 查询参数 在讲解查询参数的定义之前&#xff0c;我们先来看一个例子&#xff0c;当我打开了CSDN&#xff0c;我现在想查看我的博客浏览量&#xff0c;那么我就需要点击我的头像来打开我的个人主页,像下面这样: 我们现在把浏览器的网址取下来&#xff0c;…

uniapp编译H5解决ios的border-radius失效问题,以及ios满屏显示不全的问题

1.解决方案 .card-itemA {width: 650rpx;height: 326rpx;box-shadow: 0rpx 0rpx 30rpx 14rpx rgba(236, 235, 236, 0.25);background: linear-gradient(180deg, #FFFFFF 0%, rgba(255, 255, 255, 0) 100%);border-radius: 60rpx;overflow: hidden;// 兼容ios的圆角问题transfor…

web入门练手案例(一)

下面是一下web入门案例和实现的代码&#xff0c;带有部分注释&#xff0c;倘若代码中有任何问题或疑问&#xff0c;欢迎留言交流~ 新闻页面 案例描述&#xff1a; 互联网的发展使信息的传递变得方便、快捷&#xff0c;浏览新闻称为用户获取信息的重要渠道。下面将实现一个简…

OrangePi Zero2 全志H616开发学习文档、基础IO蜂鸣器、超声波测距、舵机PWM基础开发

一.平台介绍 OrangePi开发板不仅仅是一款消费品&#xff0c;同时也是给任何想用技术来进行创作创新的人设计的。它是一款简单、有趣、实用的工具&#xff0c;你可以用它去打造你身边的世界。 特性 CPU 全志H616四核64位1.5GHz高性能Cortex-A53处理器GPU MaliG31MP2 Supports…

Nginx解决跨域问题

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 W3C标准&#xff1…

PostgreSQL 用户及授权管理 04:授予及回收权限

PostgreSQL 是一个坚如磐石的数据库&#xff0c;它非常注重安全性&#xff0c;提供了非常丰富的基础设施来处理权限、特权和安全策略。在前面的章节中以我们介绍的基本概念为基础&#xff0c;重新审视角色概念&#xff0c;特别关注授予角色的安全性和权限&#xff08;角色可以是…

2024年前一季度,国内医疗器械营收TOP10出炉!

随着国内医疗器械市场的不断发展&#xff0c;各大医疗器械公司的财报数据成为了投资者和行业观察者关注的焦点。近日&#xff0c;根据2024年第一季度财报数据&#xff0c;我们梳理出了中国医疗器械第一财季营收排名前十的械企&#xff0c;为大家带来深入的分析和解读。 一、营…