一般的なマウスイベント
実現する方法
- ステップ1、TextLabコントロールをドラッグします
- これらのマウスイベントは仮想関数であり保護されているため、書き直す必要があります。
- ただし、現時点ではQLabelソースコードを定義することはできません。QLabelを継承してから書き換えることができます。
- ステップ2、プロジェクトを右クリックしてC ++クラスを追加します
- ステップ3、MyLabelに対応するファイルを変更します(QLabelを書き換えたいのですが、このオプションの継承がないと、QWidgetのみを継承できます)
- ステップ4、MyLabelの名前をコピーし、ステップ1で作成したUIファイルを開き、TextLabコントロールを選択し、右クリックしてプロモートします。
- ステップ5.MyLabelヘッダーファイルで、マウスイベントの書き換えを宣言します
//鼠标进入事件 void enterEvent(QEvent *); //鼠标离开事件 void leaveEvent(QEvent *); //鼠标按下事件 void mousePressEvent(QMouseEvent *ev); //鼠标释放事件 void mouseReleaseEvent(QMouseEvent *ev); //鼠标移动事件 void mouseMoveEvent(QMouseEvent *ev);
- MyLabelソースファイル内
//鼠标进入事件 void MyLabel::enterEvent(QEvent *) { qDebug() << "鼠标进入了"; } //鼠标离开事件 void MyLabel::leaveEvent(QEvent *) { qDebug() << "鼠标离开了"; } //鼠标按下事件 void MyLabel::mousePressEvent(QMouseEvent *ev) { //鼠标左键按下 打印信息 if(ev->button() == Qt::LeftButton) { QString str = QString("鼠标按下了 x = %1 y = %2 " ).arg(ev->x()).arg(ev->y()); qDebug() << str; } } //鼠标释放事件 void MyLabel::mouseReleaseEvent(QMouseEvent *ev) { if(ev->button() == Qt::LeftButton) { QString str = QString("鼠标释放了 x = %1 y = %2 " ).arg(ev->x()).arg(ev->y()); qDebug() << str; } } //鼠标移动事件 void MyLabel::mouseMoveEvent(QMouseEvent *ev) { if(ev->buttons() & Qt::LeftButton) { QString str = QString("鼠标移动了 x = %1 y = %2 " ).arg(ev->x()).arg(ev->y()); qDebug() <<str; } }