QT笔记(1)——信号&槽机制,事件

xiaoxiao2021-02-28  102

1. 信号和槽

Qt的QObject对象有信号函数和槽函数。通过QObject::connect()连接信号和槽,就可以在信号发射的时候自动执行槽函数。

自定义对象要使用i信号和槽的时候需要在类定义中加Q_OBJECTQObject::connect(obj1,SIGNAL(sig()),obj2,SLOT(slot()));中,槽函数和信号函数写的是函数名和参数类型信号可以与信号连接(作用是信号1发送后信号2发送)发射信号:emit sig();,emit tempChanged(temp);

一个典型对象的定义:

class TempConverter:public QObject { Q_OBJECT public: TempConverter(int tCel, QObject *parent=0); int tempCel() const; int tempFahrenheit() const; public slots: void setTempCel(int); void setTempFahrenheit(int); signals: void tempCelChanged(int); void tempFahrenheitChanged(int); private: int m_tempCel; };

2. Qt事件

在继承Qt自带类,比如QPushButton等的时候,重新实现事件处理函数会比使用信号方便。

重写事件处理函数的方式:MyObj定义中加

protected: void mousePressEvent(QMouseEvent* e);

源码中加:

void MyObj::mousePressEvent(QMouseEvent* e){ //.... }

应当注意,如果继承了mousePressEvent但是没有手动加上emit click();,那么点击MyObj的时候不会释放click()信号。(这也意味着可以通过实现mousePressEvent控制click()信号发射的条件)。

Event Filter的使用

转载请注明原文地址: https://www.6miu.com/read-19665.html

最新回复(0)