【Qt学习笔记】1:认识和使用Qt,信号槽,创建Qt的GUI程序

Qt5的安装很方便,在官网下载后直接安装即可,也不去使用VS,而是用自带的Qt Creater开发环境。

安装时只需要选择版本下的一个MinGW工具即可,而Qt Creater则会在Tool下自动勾选。

风格定制

使用黑色主题

这里写图片描述

使用真实制表符严格对齐

Qt默认的Tab是四个空格,改一下。
这里写图片描述

这里写图片描述

这里写图片描述
Ctrl+A全选后Ctrl+I可以自动对齐代码。

Qt的HelloWorld

它也和普通的C++程序一样从主函数开始执行,只是不要return 0结束程序了,而是将控制权交给Qt来处理,进入事件循环。

#include <QApplication>//管理GUI程序的控制流和主要设置
#include <QLabel>//文本或图像的显示类

int main(int argc, char *argv[])
{
    //对于任何一个使用Qt的图形用户界面应用程序,都正好存在一个QApplication对象
    //传入主函数传进来的参数以构造这个QApplication对象
    QApplication a(argc, argv);
    //传入字符串以用文本去建立一个QLabel对象
    QLabel label("大傻逼刘知昊,来学Qt");
    //显示这个QLabel
    label.show();
    //把程序运行交给Qt处理,进入事件循环
    return a.exec();
}

输出:
这里写图片描述
注意在Qt中不怎么使用类名* 对象指针=new 构造器(构造器参数);的方式,因为后面当窗口开着时事件循环没有退出,exec()方法还在继续,而无法预料的时候窗口关闭了,exec()方法将退出,这时没法很好的维护这种堆空间内存,而总是去让OS回收。

所以可以使用类名 对象(构造器参数);的方式在栈空间里直接用。

connect方法和信号槽

信号槽是指事件发生时的对象会广播出一个信号,表示发生了该事件,而由其它对象可以考虑接受这个信号以做出响应。

connect(信号源对象A,发送的信号B,接收者对象C,调用函数D);

即A发出B信号后,C接收到后将调用D方法。其中接受者对象可以省略,即connect方法也被重载了多种具体的传参方式。

扫描二维码关注公众号,回复: 1526016 查看本文章

按下后退出的例子

#include <QApplication>
#include <QPushButton>//按钮类

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    //建立一个按钮,传入按钮上的文字
    QPushButton qpb("退出按钮");
    //按钮qpb的clicked事件发生(发出该信号)时,将调用默认的QApplication对象的quit方法退出
    QObject::connect(&qpb,&QPushButton::clicked,&QApplication::quit);
    //显示按钮
    qpb.show();

    return a.exec();
}

按下后在控制台输出的例子

还可以使用lambda表达式,原来C++也有这个:

#include <QApplication>
#include <QPushButton>//按钮类
#include <QDebug>//可以用来调试,和控制台交互

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    //建立一个按钮,传入按钮上的文字
    QPushButton qpb("退出按钮");
    //按钮qpb的clicked事件发生(发出该信号)时,将传true给这个lambda表达式的bool参数
    QObject::connect(&qpb,&QPushButton::clicked,[](bool){
        //相当于C++的cout,用来向控制台输出文本以调试
        qDebug()<<"这个lambda表达式执行了,因为接收到了qpb的clicked事件";
    });
    //显示按钮
    qpb.show();

    return a.exec();
}

要在.pro工程文件结尾添加:

QMAKE_CXXFLAGS += -std=c++0x

观察者模式

即M-V(模型-视图)模式,是由模型发生变化时去向所有使用该模型的视图发出通知。Qt中的信号槽就是一种观察者模式的实现。

观察者对象为了获得被观察者对象发出的”变化”信号,需要被放置在一个被观察者能够操作的容器中,让被观察者发生变化时,就会从容器中取得观察者向其发送”我发生变化了”这样的通知。

一个GUI的HelloWorld

创建Qt项目时把基类选择成QDialog能比较方便的快速构建一个带窗体的工程。
这里写图片描述
双击左侧生成的lzhdialog.ui配置文件可以进入设计界面的模式。
这里写图片描述
看起来和VB很像,拖动就可以去设计这个界面了。拖进去一个Label,写点字,运行一下:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/shu15121856/article/details/80159888