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

c++学习25qt(一)qt下载使用和简单的信号与槽介绍

一. 下载与使用

qt下载(可以跳过账号登录)

开局说明

目前阶段的笔记基于传智教育的qt视频
在这里插入图片描述

创建一个新项目

请添加图片描述
在创建项目时,可以选择需要的kit
kit说明

在Detail的选项中,我们可以选择创建界面也可以不选择创建界面
区别在于是否可以直接通过界面去绘画我们需要的界面,没有的话就只能依靠代码去创建界面元素了
如果勾选了,文件中会多出一个Forms类,且会有一个.ui文件,这个就是在初始化项目时的首个界面
在这里插入图片描述
在Detailes中,我们还需要选择我们需要的基类
在这里插入图片描述

其中基类包括3种:

  • QMainWindow

QMainWindow类提供一个带有菜单条,工具条和一个状态条的主应用程序窗口。主窗口通常提供一个大的中央窗口部件,以及周围菜单,工具条,和一个状态栏。QMainWindow窗口经常被继承,使得封装中央部件,菜单,工具条,状态栏等都变得很容易,当用户点击它的时候,相应的槽就会被调用。

  • QWidget

QWidet类是所有用户界面对象的基类,窗口部件是用户界面的一个基本单元,它从窗口系统接收鼠标,键盘和其他消息,并在屏幕上绘制自己。一个窗口部件可以被他的父窗口或者是其他窗口挡住一部分。

  • QDialog

QDialog类是对话框窗口的基类,对话框窗口主要用于短期任务和用户进行短期通讯的顶级窗口,QDialog可以是模态对话框或者是非模态对话框。QDialog支持扩展并带有返回值,他们可以带有默认值

我们应该根据需求去选择

关于创建项目的文件说明

在这里插入图片描述

01test1.pro

QT       += core gui  //QT包含的模块

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets //4版本以上 加入widgets 模块

TARGET = 01test1 //目标 生成.exe程序名称
TEMPLATE = app  //模板 app Application 应用程序


DEFINES += QT_DEPRECATED_WARNINGS



SOURCES += \    //源文件
        main.cpp \
        mywidget.cpp

HEADERS += \   //头文件
        mywidget.h

mywidget.h

#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <QWidget> //QWidget是当前的基类

class MyWidget : public QWidget
{
    Q_OBJECT //Q_OBJECT 提供Qt中的信号和槽的机制

public:
    MyWidget(QWidget *parent = 0);
    ~MyWidget();
};

#endif // MYWIDGET_H

main.cpp

#include "mywidget.h"  //包含mywidget.h头文件
#include <QApplication> //应用程序类

//main 程序入口
// argc 命令行变量的数量 argv 命令行变量数组
int main(int argc, char *argv[])
{
    QApplication a(argc, argv); // a 应用程序对象 ,QT中有且只有一个应用程序对象
    MyWidget w; //创建一个自定义窗口对象
    w.show();   //窗口对象 默认是不会弹出的 ,需要调用show方法进行显示

    return a.exec(); //a.exec() 进入消息循环机制
}

mywidget.cpp

#include "mywidget.h"
# include <QPushButton>
MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
{
    QPushButton *btn = new QPushButton;
    //btn -> show();//如果是show函数,默认是用顶层方法弹出
    btn->setParent(this);//让按钮依赖父窗口
    //设置文本
    btn->setText("我是按钮");
    QPushButton *btn2 = new QPushButton("我是按钮2");
    btn2->setParent(this);
    btn2->move(100,100);
    //设置窗口大小 可以通过边缘拖拽改变窗口大小
    resize(400,400);
    //设置窗口的标题
    this->setWindowTitle("第一个项目");
    //设置固定窗口大小 无法通过拖拽边缘改变窗口大小
    this->setFixedSize(400,600);
   // connect参数说明:参数1 信号发送者(指针) 参数2 发送的信号(信号地址)
    //参数3 信号接收者(指针) 参数4 处理槽函数
    connect(btn,&QPushButton::clicked,this,&MyWidget::close);
}

MyWidget::~MyWidget()
{

}

信号与槽

信号和槽可以简单理解为命令,和执行命令
通过connect连接信号和槽

connect参数说明:

参数1 信号发送者(指针)
参数2 发送的信号(信号地址)
参数3 信号接收者(指针)
参数4 处理槽函数

自定义信号 写到signals下

自定义信号写法:

  1. 返回void
  2. 信号只需要声明,不需要实现
  3. 自定义信号可以发生重载

自定义槽函数写到 public slots下,或者 全局函数,或者public下,或者lambda表达式

自定义槽函数说明

  1. 返回void
  2. 需要声明,也需要实现
  3. 也可以发生重载

信号与扩展

  1. 信号可以连接信号
  2. 一个信号可以连接多个槽函数
  3. 多个信号可以连接同一个槽函数
  4. 信号和槽函数的参数类型,必许一一对应,参数个数,可以不一致,信号的参数个数可以多于槽函数的参数个数

也就是说槽和信号并非要一对一,可以多个信号去触发同一个槽函数去处理,槽函数的触发可以有多个信号去实现,而信号如果带了参数,槽函数中可以不接收全部,甚至都不接收,但与信号对应的槽函数不会有多于信号的参数

相关文章:

  • 日本站外网站怎么做/百度推广找谁做靠谱
  • 做网站就必须要开公司吗/电商平台哪个最好最可靠
  • 夏天做那些网站能致富/重庆网站制作系统
  • 四川住房建设部官方网站/应用商店下载安装
  • 建站公司网站建设/百度营业执照怎么办理
  • 网站建设管理 税务/软文街官网
  • joomla 反序列化漏洞利用
  • 商业银行系统体系
  • webpack优化系列六:vue项目配置 terser-webpack-plugin 压缩 JS,去除console
  • LVM管理磁盘
  • python地图库(一)—folium
  • [LeetCode周赛复盘] 第 315 场周赛20221016
  • 每天五分钟机器学习:基于正则化方法解决算法模型的过拟合问题
  • k8s证书过期
  • python数据分析及可视化(八)pandas数据规整(层级索引、数据重塑、数据合并、数据连接)
  • 文件损坏打不开怎么办?excel文件修复,看看这些解决办法
  • 如何保护Excel的工作簿结构不被改动?
  • 刷爆leetcode第七期 0018