QT5学习笔记day1--hello world与slot

QT5学习笔记day1–hello world与slot

hello world

#include "mainwindow.h"

#include <QApplication>
#include <QLabel>
#include <QPushButton>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QLabel label("hello world");
    label.show();
    QPushButton button("quit");
    //QObject::connect(&button,&QPushButton::clicked,&QApplication::quit);
    QObject::connect(&button,SIGNAL(clicked()),&a,SLOT(quit()));
    button.show();
    return a.exec();
}

分析:
1.QT是一个和BCB6很像的C++窗口开发程序,里面集成了众多的窗口类。
2.窗口化程序QApplication是主窗口
QApplication a(argc, argv):构建并调用构造函数
return a.exec():使窗口无限自循环(main函数因此不会退出,使得窗口一直存在)
3.初识QButton,QLabel,都是窗口中的控件,构造并显示如图所示
4.slot:QT的特色,观察者模式,调用方法为:

QObject::connect(&button,&QPushButton::clicked,&QApplication::quit)

slot最常用的一般形式:

connect(sender,   signal,
        receiver, slot);

表示sender发出signal后receiver产生slot响应,
具体上例则是,button被click后执行主窗口quit。
QT中的slot也可以自己定义,称为自定义信号槽

自定义信号槽

newspaper.h

#ifndef NEWSPAPER_H
#define NEWSPAPER_H

#include <QObject>

```cpp
class newspaper:public QObject
{
Q_OBJECT
public:
    newspaper(const QString &name):m_name(name){};
    void send(){
        emit newpaper(m_name);
    }
signals:
    void newpaper(const QString &name);
private:
    QString m_name;
};

#endif // NEWSPAPER_H

reader.h

#ifndef READER_H
#define READER_H
#include <QObject>
#include <QDebug>
#endif // READER_H
class reader:public QObject{
    Q_OBJECT
public:
    reader(){}
    void receiveNewspaper(const QString &name){
        qDebug()<<"receive newspaper:"<<name;
    }
};

main.cpp

#include "mainwindow.h"
#include "newspaper.h"
#include "reader.h"
#include <QCoreApplication>

int main(int argc, char *argv[])
{
   QCoreApplication app(argc,argv);
   newspaper news("Newspaper A");
   reader readers;
   QObject::connect(&news,&newspaper::newpaper,&readers,&reader::receiveNewspaper);
   news.send();
   return app.exec();
}

分析:
1.定义了两个类,报纸和读者,要完成的操作是,报纸一旦产生新的报纸,读者就读出这个报纸名并显示,本例中观察者为读者
2.报纸构造函数,传参为新的报纸名,实例化时传入这个新的报纸名
3.signal:关键字,即为connect中的signal
4.emit:调用某个函数时提交signal,比如button被点击时提交clicked,newspaper send被调用时提交newpaper
5.继承object类注意:Q_OBJECT

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值