connect(sender, SIGNAL(signal), receiver, SLOT(slot)); // 建立连接disconnect(sender, , receiver, SLOT(slot)); // 取消连接
eventfiler
特点: 方便在多个sender间切换,有继承关系的能有效减少代码量
sender->installEventFilter(receiver); // 注册筛选器sender->removeEventFilter(receiver); // 移除筛选器bool eventFilter(QObject *obj, QEvent *event) // 实现事件筛选器{ if (event->type() == QEvent::GraphicsSceneMousePress) // 是否是鼠标按压操作 { QGraphicsSceneMouseEvent *_pMoveEvent = static_cast<QGraphicsSceneMouseEvent*>(event); // 强转为鼠标事件 if (_pMoveEvent->button() != Qt::RightButton) // 不是右键操作 { return QWidget::eventFilter(obj, event); } if (hitTest(_pMoveEvent->scenePos().toPoint())) // 选中元素 { if (m_eDrawType < 6 || m_eDrawType == 7 || m_eDrawType == 10 || m_eDrawType == 11) // 允许显示右键的图元 { if (m_eScoreMode < 3 || m_eScoreMode == 4) // 允许显示右键的模式 { // 显示右键菜单 QMenu *_pPopMenu = new QMenu(); QAction *_pCreateAct = _pPopMenu->addAction("新建"); connect(_pCreateAct, SIGNAL(triggered(bool)), this, SLOT(slotCreateQml())); _pPopMenu->addSeparator(); QAction *_pEditAct = _pPopMenu->addAction("编辑"); connect(_pEditAct, SIGNAL(triggered(bool)), this, SLOT(slotEditSubQml())); _pPopMenu->addSeparator(); _pEditAct->setEnabled(false); // 其它操作 _pPopMenu->exec(_pMoveEvent->screenPos()); return true; } } } } return QWidget::eventFilter(obj, event);}
联系客服