qT入门系列1

在学习qT之前,大家一定要清楚,qT版本4和版本5不兼容。我学的是qT5,使用的工具为QT creator。写这个博客主要是为了整理学习时的一些知识。大家学习转到http://www.qter.org。

1、创建窗口。

#include<QApplication>
#include<QLAbel>
int main(int argc,char* argv[])
{
    QApplication app(argc,argv);
    QLabel label("Hello QT!!");
    label.show();
    app.exec();
}

 QApplication,QLAbel位于widgets模块中。需要在.pro文件中QT+=widgets。(即window gadget(窗口控件))

运行时会产生一个内容为:"Hello Qt!!"的窗口。

QLabel label("Hello QT!!");

产生一个内容"Hello QT!!"的对象。

label.show();

将窗口展示。

app.exec();

 循环事件。相当于while(true)即无限循环。

运行结果

因为创建的是控制台应用,所以会有黑框。

QLabel *label=new QLabel("Hello QT");     
label->show();               

如果写成这样就会存在内存泄漏的风险,上面的代码,会在程序结束是自动调用析构函数,销毁label对象,但如果使用new就需要自己释放申请的空间。但这个事件是一个循环的事件,所以在销毁的时机不好判断。所以我们要尽量避免使用这种代码。

2、信号和槽

信号和槽类似于设计模式中的“观察者模式”,但它的实现机制并不是经典的设计模式实现的方法。

简单来说“信号和槽”,即当触发某个事件,该事件会产生一个信号,而这个信号会自动去触发和它绑定的槽函数。所以我们经常使用的绑定函数为:

connect(sender,signal,receiver,slot);

 四个参数的依次为意义为:sender:发出信号的对象,signal:发送对象发出的信号,receiver:接收信号的对象,slot:处理的函数。而其中第三个参数可以省略,若省略,默认为this。(即信号的发出对象--第一个参数)

#include<QApplication>
#include<QPushButton>
#include<QDebug>
int main(int argc,char* argv[])
{
    QApplication app(argc,argv);
    //建立一个按钮,在按钮上显示“Quit”。
    QPushButton button("Quit");
    //connect为QObject的静态方法。
    //绑定信号和槽,当点击“Quit”按钮时,会自动退出。
    QObject::connect(&button,&QPushButton::clicked,&QApplication::quit);
    button.show();
    app.exec();
}

运行时会产生一个按钮,点击按钮时会退出。

运行结果

这样不好观察我们可以换一个槽函数。

QObject::connect(&button,&QPushButton::clicked,[](){qDebug()<<"您点击了按钮。";});

 将函数换成了

//lambda表达式,即匿名函数。
[](){qDebug()<<"您点击了按钮。";}

 在使用lambda表达式之前需要在.pro文件中加入CONFIG+=c++11。(即加入c++11的支持)

运行结果如下:

每点击依次“Quit”按钮就会在屏幕上打印一句“您点击了按钮”。

(这些例子都来自“QT 开源社区”,自己微微改动了以下,不过我都是运行过的。^_^)

猜你喜欢

转载自blog.csdn.net/qq_39038983/article/details/83474976