QT学习笔记(1)

小白开始学习QT了~
主要参见网上的QT学习之路教程,自己整理一下需要记住的
声明:此系列完全是个人记忆力不好保存使用,不用做教程,有想学习的朋友请直接搜索QT学习之路,讲解很详细~
第一步当然是写Hello World的程序。
使用Qt creator创建一个工程,在main.cpp中开始动工

#include <QApplication>
#include <QLabel>

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

    QLabel label("Hello, world");
    label.show();

    return app.exec();
}

这里的QApplication是用来开始创建事件循环的(我自己也不太懂)
QLabel类提供文本和图片显示,用Hello world初始化它,这个类还支持设置字体,颜色等操作

第二步:信号槽的使用
信号槽是用来通信的,发出一个信号让接收者执行相应的操作

#include <QApplication>
#include <QPushButton>

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

    QPushButton button("Quit");
    QObject::connect(&button, &QPushButton::clicked, &QApplication::quit);
    button.show();

    return app.exec();
}

这时创建了一个QPushButton对象(就是一个按钮),然后使用Socket告诉QApplication如果我按了这个按钮(clicked),就退出(quit)

当然这一句也可以使用Lambda表达式,将其换成(别忘了加上头文件QDebug):

QObject::connect(&button, &QPushButton::clicked, [](bool){ qDebug() << "Don't clicked me!"; });

关于Lambda表达式好像又是一湖深水,还要继续学习。

要想运行还需要在pro文件中加上:

QMAKE_CXXFLAGS += -std=c++0x

这时候点击按钮就打印出Don’t clicked me!啦

信号槽还可以使用自己的类实现,自定义的类必须要继承QObject类,必须要包括Q_OBJECT

注意事项引用自https://www.devbean.net/2012/08/qt-study-road-2-custom-signal-slot/
不管是不是使用信号槽,都应该添加这个宏。这个宏的展开将为我们的类提供信号槽机制、国际化机制以及 Qt 提供的不基于 C++ RTTI 的反射能力。因此,如果你觉得你的类不需要使用信号槽,就不添加这个宏,就是错误的。其它很多操作都会依赖于这个宏。注意,这个宏将由 moc(我们会在后面章节中介绍 moc。这里你可以将其理解为一种预处理器,是比 C++ 预处理器更早执行的预处理器。) 做特殊处理,不仅仅是宏展开这么简单。moc 会读取标记了 Q_OBJECT 的头文件,生成以 moc_ 为前缀的文件,比如 newspaper.h 将生成 moc_newspaper.cpp。你可以到构建目录查看这个文件,看看到底增加了什么内容。注意,由于 moc 只处理头文件中的标记了Q_OBJECT的类声明,不会处理 cpp 文件中的类似声明。因此,如果我们的Newspaper和Reader类位于 main.cpp 中,是无法得到 moc 的处理的。解决方法是,我们手动调用 moc 工具处理 main.cpp,并且将 main.cpp 中的#include “newspaper.h”改为#include “moc_newspaper.h”就可以了。不过,这是相当繁琐的步骤,为了避免这样修改,我们还是将其放在头文件中。许多初学者会遇到莫名其妙的错误,一加上Q_OBJECT就出错,很大一部分是因为没有注意到这个宏应该放在头文件中。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值