Qt入门(二):第一个Qt项目

新建项目

打开Qt Creator,新建项目,然后一路next
在这里插入图片描述
在这里插入图片描述

到这一步baseclass有三种选择:

  • QMainWindow:主窗口基类,相较于QWidget,多了菜单栏等杂七杂八的东西。
  • QWidget:最基础的窗口基类,QMainWindow和QDialog都是它的子类
  • QDialog:对话窗基类

下面的widget.ui是UI文件。
选QWidget,接着一路next
完成后,直接ctrl+R,构建,就能看到项目的窗口了

如果中间出现什么问题,例如not suitable toolkit之类的,自行解决,搞不好证明C++还没学好,先去学C++。

项目架构

几个重要的类:

  • QApplication:Qt中的核心类,用于自动处理事件循环,全局设置等事项,每个项目都要用,可以看作是Qt初始化。
  • Widget:这个就是前面自己命名的类,就是自己的主窗口类
  • QWidget:构件基类,所有构件都继承这个类,这个类又继承于QObject类,
#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv); //Qt提供的核心类,实现事件循环,全局设置等功能,所有程序都要用到。
    Widget w;
    w.show(); //用于更新窗口显示
    return a.exec(); //启动事件循环
}

UI文件:widget.ui,这个文件不能直接修改,是在”设计“中可视化修改的,双击widget.ui文件,会自动进入设计模式。
在这里插入图片描述
设计模式下可以进行构件拖拽,大致流程就是:拖进去需要的构件,右侧属性框里改一下名字,几个构件想要对齐的时候,可以选中多个,然后点击上面的布局(就显示框上面那几个蓝色方块)
在这里插入图片描述

构件可以通过右键,修改样式表进行美化,Qt的样式表和CSS基本一致。还可以添加图像文件,用作background或者icon

到此,一个毫无用处的界面就OK了。

控制逻辑

信号与槽

Qt中的信号与槽机制是非常重要的事件通信机制。

  • 信号(signals):发生事件时发出信息,QPushButton有clicked()信号,当被点击时发出。
  • 槽(slots):用来相应信号的函数办法(类似于回调函数或者hook),当信号发出时,函数被调用。

在这里插入图片描述
可以直接在UI文件设计界面下面添加信号和槽。还可以用以下代码方式连接:

  • QObject::connect
  • Lambda表达式
  • 函数指针
  • 自动生成槽函数

Qt中还可以自定义信号和槽函数,定义信号函数的时候前面要加signals关键字(信号函数只需要声明,不需要实现,信号函数的输入会传递给槽函数),定义槽函数前面要加slots关键字,发射信号即emit mySignal(123),这样就可以触发槽函数了。

Qt中所有事情都是围绕构件展开的,信号和槽也不例外,定义信号和槽函数也都是构件的成员函数,连接的时候也是要指定信号是由哪个对象发出的哪个信号函数,哪个对象用哪个槽函数接收这个信号。

事件机制

Qt中所有的通信都是基于事件来进行的,用户的所有操作都是事件,即使只是挪动了一下鼠标,还有一些事件是系统自动发出的,例如定时器。
Qt中一个事件的处理过程:事件产生->事件派发->事件过滤->事件分发->事件处理

信号与槽是一种特殊的事件
感觉Qt有点像一个大的状态机,每一个事件就是一次状态的转移。

  • 事件派发:QApplication将事件分发到指定构件
  • 分发过程中可以采用过滤器对事件进行过滤,默认不过滤
  • 分发到指定构件后,事件分发器根据事件类型分配给指定的处理函数

Qt主要内容大概也就这样,麻雀虽小,五脏俱全,掌握UI设计,信号槽机制,事件机制,已经足够实现简单的APP了。

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值