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.mzph.cn/diannao/11979.shtml

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

相关文章

#自学习# 记一次py脚本打开浏览器页面

在项目总结中&#xff0c;遇到系统后台利用浏览器拉起一个已知路径页面的需求&#xff0c;趁着机会整理下。实现起来比较简单&#xff0c;浏览器默认谷歌。 一、技术原理 Selenium&#xff1a;Selenium 是一个用于自动化 Web 浏览器的工具&#xff0c;可模拟用户在浏览器中的各…

成都百洲文化传媒有限公司怎么样?靠谱吗?

在数字化浪潮席卷全球的今天&#xff0c;电商行业正以前所未有的速度蓬勃发展。作为这一变革的积极参与者和推动者&#xff0c;成都百洲文化传媒有限公司以其专业的电商服务&#xff0c;正逐渐成为行业内的佼佼者。 一、公司简介 成都百洲文化传媒有限公司自成立以来&#xff…

MyBatis的创建和测试

创建项目点击Spring Initializr然后点击next 点击SQL 选择里面的Mybatis Framework和Mysql Driver 按如下图片创建项目 user表中的数据 #下面这些内容是为了让MyBatis映射 #指定Mybatis的Mapper文件 mybatis.mapper-locationsclasspath:mappers/*xml #指定Mybatis的实体目录 my…

【Java】IDEA自动生成类图和时序图

【Java】IDEA自动生成类图和时序图 idea 的强大之处在于此&#xff0c;它包含了很多小插件&#xff0c;我们不需要再次下载相关插件&#xff0c;只需要在idea中小小的设置一下就可以了,下面是设置方法&#xff0c;我用的是idea2020版本 打开设置File -> Settings->Diagr…

Netty-面试题(中)(五十)

关于零拷贝和堆外内存 Java在将数据发送出去的时候&#xff0c;会先将数据从堆内存拷贝到堆外内存&#xff0c;然后才会将堆外内存再拷贝到内核态&#xff0c;进行消息的收发&#xff0c;代码如下: 所以&#xff0c;我们发现&#xff0c;假如我们在收发报文的时候使用直接内存&…

【Linux】进程信号(2万字)

目录 前言 一、生活角度的信号 1.1、我们来见一见信号&#xff1a; 1.2、模拟一下 kill 指令 二、信号的处理 三、产生信号的5种方法 3.1、kill命令 3.2、键盘可以产生信号 3.3、3种系统调用 3.4、软件条件 3.5、异常 四、比较 core 和 Term 五、键盘信号产生 六…

SSL/TLS协议信息泄露漏洞(CVE-2016-2183)解法

1.运行gpedit.msc&#xff0c;进入本地组策略编辑器。 2. 本地组策略编辑器-->计算机配置-->管理模板-->网络-->SSL配置设置-->启用“SSL密码套件顺序”。 3. 将原有的密码套件值清空&#xff0c;拷入下面的值&#xff0c;保存设置&#xff0c;并重启服务器即…

EmotiVoice 实时语音合成TTS;api接口远程调用

参考:https://github.com/netease-youdao/EmotiVoice 测试整体速度可以 docker安装: 运行容器:默认运行了两个服务,8501 一个streamlit页面,另外8000是一个api接口服务 docker run -dp 8501:8501 -p 8250:8000 syq163/emoti-voice:latest##gpu运行 (gpu运行遇到CUDA er…

ios与android上音频格式的推荐

首先贴一张官方对于ios与android上音频格式的推荐&#xff1a; 这里只给出了推荐格式&#xff0c;一般我们在实际运用中会使用如下方式&#xff1a; 一、IOS与安卓各一套&#xff1a;音乐&#xff1a;都使用MP3 音效&#xff1a;ios用caf Android用ogg 二、使用通用的MP3格式…

【Linux系统编程】第十八弹---进程状态(上)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、操作系统进程 1.1、进程背景 1.2、进程如何在CPU上运行的&#xff1f; 1.2、进程状态 2、Linux的进程状态 2.1、如何描…

Linux修炼之路之权限

目录 引言 一&#xff1a;Linux中用户的分类 二&#xff1a;在Linux中的权限 1.权限的两种属性 1.人的属性 2.事物属性 -主要以文件属性为主 3.文件权限值的两种表示方式方法 2.更改文件访问者(拥有者&#xff0c;所属组&#xff0c;其他人)权限属性 3.更改文件的拥有…

commvault学习(7):恢复oracle

在实际生产环境中&#xff0c;oracle的恢复方式大部分是异机恢复。 环境&#xff1a; 备份机&#xff1a;windows server2008&#xff0c;ip&#xff1a;192.168.20.56 恢复目标机&#xff1a;windows server2008&#xff0c;ip&#xff1a;192.168.20.55 CS、MA&#xff1…

建立一物一码数字化营销体系,纳宝科技助力五丰黎红在调味品行业再创佳绩!

五丰黎红隶属于华润五丰集团&#xff0c;公司历史可溯源至1979年&#xff0c;前身是汉源花椒油厂&#xff0c;是一家拥有悠久历史的调味品品牌。一直以来&#xff0c;五丰黎红坚持调味品原料、研发、生产、加工一体化的全产业链经营模式&#xff0c;以“质量”为核心&#xff0…

[FlareOn1]Bob Doge

[FlareOn1]Bob Doge Hint:本题解出相应字符串后请用flag{}包裹&#xff0c;形如&#xff1a;flag{123456flare-on.com} 得到的 flag 请包上 flag{} 提交。 密码&#xff1a;malware 没什么思路&#xff0c;原exe文件运行又install了一个challenge1.exe文件 c#写的&#xff…

windows vscode设置扩展和缓存目录

vscode的扩展和缓存占了很大的空间&#xff0c;而且默认在C盘&#xff0c;很烦。。。 修改vscode快捷方式的目标处&#xff1a;"C:\Users\Nv9\AppData\Local\Programs\Microsoft VS Code\Code.exe" --extensions-dir "D:\Program Cache\VScode\extensions"…

基础模型的推理:综述

24年1月论文“A Survey of Reasoning with Foundation Models”&#xff0c;来自香港中文大学、华为、香港大学、上海AI实验室、香港科技大学、大连理工、北京大学、清华大学、合肥工大、中国人民大学、复旦大学和香港科技大学广州分校。 推理是解决复杂问题的关键能力&#x…

网上跳蚤市场|基于SSM+vue的网上跳蚤市场系统的设计与实现(源码+数据库+文档)

网上跳蚤市场系统 目录 基于SSM&#xff0b;vue的网上跳蚤市场系统的设计与实现 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2后台登录模块 5.2.1管理员功能 5.2.2会员功能 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八…

Linux字符设备驱动设计

Linux字符设备驱动设计 概述 驱动的定义与功能 计算机系统中存在着大量的设备&#xff0c; 操作系统要求能够控制和管理这些硬件&#xff0c; 而驱动就是帮助操作系统完成这个任务。 驱动相当于硬件的接口&#xff0c; 它直接操作、 控制着我们的硬件&#xff0c; 操作系统通…

python批量为图片做灰度处理

欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.代码 三.使用 四.总结

搞懂Docker(九)- 使用Docker Compose

获取示例程序 示例程序 或者 示例程序 获取示例程序程序结构如下├── getting-started-app/ │ ├── package.json │ ├── README.md │ ├── spec/ │ ├── src/ │ └── yarn.lock使用Docker Compose Docker Compose是一个帮助你定义和共享多容器应用程序的工具…