QT 事件触发总结 - 信号

signal:信号
solts: 槽函数
类型

  1. 系统定义了信号和槽:直接重写相应的函数就行
    鼠标
	 void mousePressEvent(QMouseEvent *event);       // 单击 event->button()==Qt::LeftButton 左键,Qt::RightButton右键
	 void mouseReleaseEvent(QMouseEvent *event);     // 释放
	 void mouseDoubleClickEvent(QMouseEvent *event); // 双击
	 void mouseMoveEvent(QMouseEvent *event);        // 移动
	 void wheelEvent(QWheelEvent *event);            // 滑轮		

键盘

	 void Widget::keyPressEvent(QKeyEvent *event)      // 按下   event->modifiers() 特殊键位,event->key() 普通键位
	 void Widget::keyReleaseEvent(QKeyEvent *event)    // 释放
  1. 系统定义了信号:需要用户编写槽函数,并绑定信号
    按钮 信号 clicked点击;pressed按下;releaed释放;双击通过定时器来实现
connect(sender, SIGNAL(signal), receiver, SLOT(slot));     	// 建立连接
disconnect(sender, SIGNAL(signal), receiver, SLOT(slot));	// 取消连接
  1. 用户自己定义信号和槽:需要自己触发信号
signal: 
	signal(int);	    // 信号定义
emit signal(int i); 	// 发送信号
// 建立连接
static QMetaObject::Connection connect(const QObject *sender, const QMetaMethod &signal,
                    const QObject *receiver, const QMetaMethod &method,
                    Qt::ConnectionType type = Qt::AutoConnection);

案例:

class AutomaticLabelTool : public QMainWindow
{
	Q_OBJECT
public:
signals:
	void LoginError(const QString& mess);
}
class ConnectCamera : public QWidget
{
	Q_OBJECT
public:
	ConnectCamera(QWidget *parent = Q_NULLPTR);
	~ConnectCamera();
public slots:
	void onErrorMess(const QString & _errorMess);
}
connect(this, &AutomaticLabelTool::LoginError, &m_connectCamera, &ConnectCamera::onErrorMess);
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值