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

news2024/10/5 14:15:22

一、创建第一个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父类  ->  QWidget
    myWidget 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的析构调用

我的按钮类析构

五、Qt中的坐标系

左上角为(0,0)点

x以右为正方向

y以下为正方向

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

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

相关文章

智慧手术室手麻系统源码,C#手术麻醉临床信息系统源码,符合三级甲等医院评审要求

手麻系统全套源码&#xff0c;C#手术麻醉系统源码&#xff0c;支持二次开发&#xff0c;授权后可商用。 手术麻醉临床信息系统功能符合三级甲等医院评审要求&#xff0c;实现与医院现有信息系统如HIS、LIS、PACS、EMR等系统全面对接&#xff0c;全面覆盖从患者入院&#xff0c;…

深度学习之视觉特征提取器——GoogleNet/Inception

GoogleNet GoogleNet在2014年中的ImageNet夺冠&#xff0c;将Inception这一结构推向了热潮。从另外一个角度来看&#xff0c;CV魔改网络结构也从中得到启发或者说推动&#xff0c;拓宽了各种魔改的方式。GoogleNet其实只是Inception这一结构大规模集成后得到的模型&#xff0c…

堆的应用1——堆排序

一&#xff0c;堆排序 堆排序是一种基于比较的排序算法&#xff0c;它利用堆这种数据结构所设计。 堆是一个近似完全二叉树的结构&#xff0c;并同时满足堆积的性质&#xff1a;即子结点的键值或索引总是小于&#xff08;或者大于&#xff09;它的父结点。 堆排序可以分为两…

【python】模拟巴特沃斯滤波器

巴特沃斯滤波器&#xff08;Butterworth Filter&#xff09;&#xff0c;以其设计者斯蒂芬巴特沃斯&#xff08;Stephen Butterworth&#xff09;的名字命名&#xff0c;是一种具有平滑频率响应的滤波器。这种滤波器在频域中具有非常平坦的无波纹响应&#xff0c;直到它达到截止…

Linux(openEuler、CentOS8)企业内网DHCP服务器搭建(固定Mac获取指定IP)

----本实验环境为openEuler系统<以server方式安装>&#xff08;CentOS8基本一致&#xff0c;可参考本文&#xff09;---- 目录 一、知识点二、实验&#xff08;一&#xff09;为服务器配置网卡和IP&#xff08;二&#xff09;为服务器安装DHCP服务软件&#xff08;三&a…

iOS 17 / iPad OS 17屏蔽更新

iOS 17 / iPad OS 17屏蔽更新 1&#xff0c;进入屏蔽iOS更新的描述文件下载链接 下载链接 wx 搜索 Geek 前端发送屏蔽更新进行获取 2&#xff0c;复制这段链接&#xff0c;在Safari浏览器中打开&#xff0c;注意打开后别点击下载&#xff01;要先改时间&#xff01; 3&#…

实例分割——Mask R-CNN、YOLOV8、RTMDET、DeepLab四种实例分割算法比对

1.概述 1.1 语义分割与实例分割 实例分割和语义分割都是计算机视觉领域中图像分割的任务&#xff0c;它们在目标和方法上有一些区别&#xff1a; 语义分割&#xff1a; 语义分割的目标是对图像中的每个像素打上类别标签&#xff0c;即识别出图像中每个像素属于哪个预定义的…

Redis简介和数据结构

目录 简介 进入之后身份认证才能使用 优点 用途&#xff1a; 数据结构 string string自动扩容 Redis中的简单动态字符串&#xff08;SDS&#xff09;具有以下优点&#xff1a; SDS数据的编码格式 比较&#xff1a; string 常用操作 分布式锁 使用情况&#xff0c;…

算法day03

第一题 179. 查找总价格为目标值的两个商品 本题采用前后指针和单调性规律可解&#xff1b; 解题思路如下&#xff1a; 1、设置前后指针 2、前后指针所指的两数之和大于目标数&#xff0c;右指针左移&#xff1b; 前后指针所指的两数之和小于目标数&#xff0c;左指针右移&…

3D 打印为压铸行业的带来新动力

近年来&#xff0c;随着多家车企的积极引领&#xff0c;一体化压铸技术已逐渐成为汽车行业的一大趋势。该技术不仅简化了车身的制造流程&#xff0c;而且优化了供应链环节&#xff0c;成为汽车制造业中的一次创新&#xff0c;同时显著提升了经济效益。 压铸技术&#xff0c;简而…

excel中怎么跳转到指定的单元格?

也许你会有这样的需求&#xff0c;如A1单元格中显示B100这种单元格地址&#xff0c;怎么做以点一下就跳转到B100&#xff1f; 一、设置公式 B1HYPERLINK("#"&MID(CELL("FILENAME",A1),FIND("]",CELL("FILENAME",A1))1,99)&&…

echart 多表联动value为null时 tooltip 显示问题

两个图表&#xff0c;第一个有tooltip,第二个隐藏掉 两个图表的 series 如下 // ----- chart1 ----series: [{name: Union Ads,type: line,stack: Total,data: [320, 282, 391, 334, null, null, null],},{name: Email,type: line,stack: Total,data: [220, 232, 221, 234, 29…

现货黄金流程到何种程度?现货黄金在金融产品中的占比是多少?

踏入2024年以来&#xff0c;受美联储降息以及地缘局势紧张的影响&#xff0c;美元受压&#xff0c;避险情绪高涨&#xff0c;众多因素影响下黄金价格出现了强势的上涨&#xff0c;屡创历史新高。在上涨如此强劲的背景下&#xff0c;投资者希望通过黄金投资来实现资产增值。市场…

锁相环(PLL)经典书籍分享(可下载)

锁相环&#xff08;PLL&#xff09;作为一种确保系统同步的控制机制&#xff0c;广泛应用于频率合成、时钟恢复、信号调制与解调等多个方面。 探索锁相环&#xff08;PLL&#xff09;技术的深度和广度&#xff0c;最有效的途径之一便是通过专业书籍的系统学习。以下是为渴望掌…

每日OJ题_贪心算法三⑦_力扣991. 坏了的计算器

目录 力扣991. 坏了的计算器 解析代码 力扣991. 坏了的计算器 991. 坏了的计算器 难度 中等 在显示着数字 startValue 的坏计算器上&#xff0c;我们可以执行以下两种操作&#xff1a; 双倍&#xff08;Double&#xff09;&#xff1a;将显示屏上的数字乘 2&#xff1b;递…

英伟达推出视觉语言模型:VILA

NVIDIA和MIT的研究人员推出了一种新的视觉语言模型(VLM)预训练框架&#xff0c;名为VILA。这个框架旨在通过有效的嵌入对齐和动态神经网络架构&#xff0c;改进语言模型的视觉和文本的学习能力。VILA通过在大规模数据集如Coy0-700m上进行预训练&#xff0c;采用基于LLaVA模型的…

Core Impact 21.5 (Windows) - 高级渗透测试

Core Impact 21.5 (Windows) - 高级渗透测试 Fortra | Core Security Penetration testing software, Release Feb 2024 请访问原文链接&#xff1a;Core Impact 21.5 (Windows) - 高级渗透测试&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&…

多线程学习Day07

共享模型之不可变 从一个日期转换的问题开始 Slf4j(topic "c.Test1") public class Test1 {public static void main(String[] args) {SimpleDateFormat sdf new SimpleDateFormat("yyyy-MM-dd");for (int i 0; i < 10; i) {new Thread(() -> {…

20K薪资要什么水平?来看看25岁测试工程师的面试过程…_测试工程师薪资20k(2)

既有适合小白学习的零基础资料&#xff0c;也有适合3年以上经验的小伙伴深入学习提升的进阶课程&#xff0c;涵盖了95%以上软件测试知识点&#xff0c;真正体系化&#xff01; 由于文件比较多&#xff0c;这里只是将部分目录截图出来&#xff0c;全套包含大厂面经、学习笔记、…

无监督式学习

1.是什么&#xff1f; 无监督式学习与监督式学习**最大的区别就是&#xff1a;**没有事先给定的训练实例&#xff0c;它是自动对输入的示例进行分类或者分群&#xff1b; 优点&#xff1a;不需要标签数据&#xff0c;极大程度上扩大了我们的数据样本&#xff0c;其次不受监督信…