Qt基本知识

本文详细介绍了Qt的初学者教程,包括创建项目、代码解释、基本使用(如快捷键、控件、信号槽)、QMainWindow的组成、布局管理、常用控件的使用、自定义控件封装、事件处理、定时器和文件操作等,最后讨论了项目的打包和发布流程。
摘要由CSDN通过智能技术生成

Qt第一天使用

1.创建项目

  1. 项目中项目名字不能有中文,路径中也不能有中文
  2. Qmainwindows是Qwidget和QDialog的父类,父类很多东西都不包含
  3. 版本控制系统-对团队开发起作用,

2. 代码解释

     1.QT       += core gui  、、包含的模块,所述的包含的类可以使用
     2. greaterThan(QT_MAJOR_VERSION, 4): QT += widgets// 4版本以上加入widgets
     3. TARGET = QT_20190705//,目标  生成的.exe程序名称
     4. TEMPLATE = app   // 模板
     5. SOURCES...//源文件
     6. HEADERS..//头文件
     7. mian.cpp
     		- #include "widget.h"  //头文件
              #include <QApplication> // 应用程序类
                                                           //  argc 命令行变量的数量 argv 命令行变量数组
              QApplication a(argc, argv);//a应用程序对象,Qt中有且就有一个应用程序对象,获取操作,例如鼠标点击
               Widget w;  // 创建一个自定义窗口对象
               w.show(); //窗口对象弹出函数
               return a.exec();//进入消息循环机智,阻塞代码
     8.
     	#ifndef WIDGET_H
		#endif // WIDGET_H  //防止头文件相互包含,类似于#program 
		#include <QWidget>      //父类(基类)

		Q_OBJECT// Q_OBJECT提供了Qt中的信号和槽的机制

3基本使用

3.1基本快捷键以及button控件使用展示

//widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>
/*
 * 命名规范
 * 类名首字母大写 单词与单词之前首字母大写
 * 函数,变量...首字母大写
 * 常用快捷键
 * ctrl +R 运行
 * ctrl + B 编译
 * F1 帮助文档 选中一个变量,按住F1
 * 注释快捷键ctrl + /
 * 字体的缩放 ctrl +鼠标滚轮
 * 整行代码的移动 ctrl +shift + 上箭头或者下箭头
 * 查找 ctrl + f
 * 自动对齐 ctrl+ i
 * 同名之间的.h和.cpp切换 ctrl + F4
 * 帮助文档 F1,左侧列表,帮助文档另外的程序
 *
 *
 *
 */
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
   
    ui->setupUi(this);
    QPushButton *btn = new QPushButton;
   // btn->show();// 默认是用顶层的方式弹出窗口
    //预期想要按钮依赖大窗口弹出
    btn->setParent(this);//给button找一个父类
    btn->setText("周五");
    QPushButton *btn2 = new QPushButton("下雨");//在相同的位置会覆盖原来之前同位置的东西
    btn2->setParent(this);
    btn2->move(100,0);
    this->resize(600,400);//设置窗口大小
    this->setWindowTitle("fiist program");//设置窗口标题
    this->setFixedSize(600,400);  //设置窗体的固定大小



}

Widget::~Widget()
{
   
    delete ui;
}

3.2对象树的概念及其创建顺序

  1. 在创建对象树的时候,如果父类是Qobject或者Qobject的派生类,这个对象可以不用去管理释放,会放到一个对象树上,析构函数会自动管理对象的释放
  2. 析构的顺序和释放的顺序是相反的

3.3Qt中的坐标系

左上角是(0,0)点,往右→增加,往下增加

3.4信号和槽的概念

  1. connect(信号的发出者(指针),信号内容(地址),信号的接受者(指针),处理信号(槽函数地址))
connect(btn2,&QPushButton::clicked,this,&Widget::close);//
// 其中QPushButton换成其子类也可以,实现点击button2关闭窗口
  1. 信号槽的优点:松散耦合,将两个不想关的内容关联起来

3.5自定义信号的处理

  1. 各种信号和槽的写法
  2. 有参与无参数写法的区别(当信号槽发生重载了,就需要使用函数指针指明需要的槽函数的地址)
  3. 扩展
    • 信号可以连接信号
    • 一个信号可以连接多个槽函数
    • 多个信号可以连接同一个槽函数
    • 信号和槽的参数类型必须一一对应
    • 信号的参数个数可以多余槽函数的个数,但是类型也必须一一对应
    • 信号和槽可以断开连接

3.5Qt4版本以前信号和槽的写法

//缺点: 参数类型 不做检测,原因在于SIGNAL和SLOT括号下的内容转为字符串SIGNAL(“hungry(int))”)
//优点: 参数类型比较直观

 connect(zt,SIGNAL(hungry(QString)),st,SLOT(treat(QString)));
 //  classover();                  

3.6 lambda表达式

[capture](parameters)mutable->return-type
{
statement;
}
[函数对象参数](操作符重载函数参数)mutable->返回值{函数体}

  1. 参数
    * [] ,标识一个lambda的开始,必须存在,不能省略,函数对象参数是传递给编译器自动生成的函数对象类的构造函数,函数对象参数只能是哪些到定义lambda所在作用范围内可见的局部变量(包括lambda所在类的this)有以下形式
    -空:没有使用任何函数对象参数。
    - = :函数体可以使用lambda所在作用范围内所有可见的局部变量(包括lambda所在类的this),并且是以值传递的方式(相当于编译器自动帮我们按值传递了所有局部变量)
    - & :函数体可以使用lambda所在作用范围内所有可见的局部变量(包括lambda所在类的this),并且是以引用传递的方式(相当于编译器自动帮我们按引用传递了所有局部变量)
    - this :函数体内可以使用lambda所在类中的成员变量,和=差不多
    - a :将a按照值进行传递。按值进行传递时,函数体内不能修改传递进来的a的拷贝,因为默认情况下函数时const的 ,要修改传递进来的a的拷贝,可以添加mutable修饰符,不能对其他变量进行修改
    - &a: 将a 按照引用进行传递
    - a,&b:a 按照值传递,b按照引用传递
    - =,&a,&b:除a,b被引用传递外,其他参数按照值传递
    - &,a,b:除a,b按照值传递,其他按照引用进行传递
    • ()操作符重载函数参数
      标识重载的()操作符的参数,没有参数时,这部分可以省略,参数可以通过按值(如(a,b)) 和按引用(如:(&a,&b))两种方式进行传递
    • 可修改标识符
      mutable 声明,可省,按照值传递函数对象函数时,加上mutable修饰符后可以修改按值传递进来的拷贝(修改的是拷贝,而不是值本身)
    • ->(返回值)+类型
    • CONFIG += c++11 对于qt4版本前的低版本使用lamdba表达式必须要加入的行配置信息

4.QMainWindow

QMainWindow概览图

4.1 组成介绍

  • 铆接部件:可以单独作为一部分窗口的部件

4.2 菜单栏、工具栏、状态栏、铆接部件,核心部件

  1. 菜单栏只能有一个
	 QMenuBar *bar = menuBar();
 	 setMenuBar(bar); //设置到窗口中
 	 QMenu*fileMenu =  bar->addMenu("文件");
    QMenu *editMenu = bar->addMenu("编辑");
    //添加菜单项
    QAction *newaction =   fileMenu->addAction("新建");
    //添加分割线
    fileMenu->addSeparator();
    QAction *openaction =   fileMenu->addAction("打开");//返回一个QAction
  1. 工具栏
  //工具栏  可以有多个
    QToolBar * toolbar = new QToolBar(this);
    //addToolBar(toolbar);默认上部分
    addToolBar(Qt::LeftToolBarArea,toolbar);//第一个参数是枚举值,
    toolbar->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);
    toolbar->setFloatable(false);//设置浮动
    toolbar->setMovable(false);//设置移动
    //工具中添加小控件
    QPushButton *btn = new QPushButton("按钮",this);
    toolbar->addWidget(btn);
    //工具栏中添加·菜单项
    toolbar->addAction(newaction);
    toolbar->addSeparator();
    toolbar->addAction(openaction);
  1. 状态栏
//状态栏 只有一个
  QStatusBar *statu =  statusBar();
  //将状态栏放入状态栏
  setStatusBar(statu);
  QLabel *lable = new QLabel("左侧信息",this);//一个专门显示文字的对象
  //将标签 放入到 状态栏中
  statu->addWidget(lable);
  QLabel* lable2 = new QLabel("右侧信息",this);
  statu->addPermanentWidget(lable2);//从右往左
  1. 铆接部件,浮动窗口
 //铆接部件,浮动窗口 可以有多个
    QDockWidget * dock = new QDockWidget("铆接部件",this);
    addDockWidget(Qt::BottomDockWidgetArea, dock);// 放在核心部件的下面
    // 可以设置停靠范围
    dock->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);
    //this->addDockWidget(dock);
  1. 核心部件
    //核心部件  只能有一个
    QTextEdit * edit = new QTextEdit(this);
    setCentralWidget(edit);

4.3 资源文件

  1. 将资源文件导入到项目中
  2. 添加文件 ->Qt->Qt recourse File
  3. 添加前缀,添加路径
  4. 使用
    //在新建的菜单项上-显示图片
   // ui->actionnew->setIcon(路径);

    //资源文件 使用方式 " :+前缀名+文件名"
    ui->actionnew->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值