我正在使用Qt Creator为扫雷游戏创建GUI。
我怎么知道右键单击QpushButton?游戏中的标志。
换句话说,哪个信号用于右键单击?

最佳答案

使用 mousePressEvent 插槽上的过滤器创建自己的按钮。

qrightclickbutton.h

#ifndef QRIGHTCLICKBUTTON_H
#define QRIGHTCLICKBUTTON_H

#include <QPushButton>
#include <QMouseEvent>

class QRightClickButton : public QPushButton
{
    Q_OBJECT

public:
    explicit QRightClickButton(QWidget *parent = 0);

private slots:
    void mousePressEvent(QMouseEvent *e);

signals:
    void rightClicked();

public slots:

};

#endif // QRIGHTCLICKBUTTON_H

qrightclickbutton.cpp
#include "qrightclickbutton.h"

QRightClickButton::QRightClickButton(QWidget *parent) :
    QPushButton(parent)
{
}

void QRightClickButton::mousePressEvent(QMouseEvent *e)
{
    if(e->button()==Qt::RightButton)
        emit rightClicked();
}

现在像这样连接
QRightClickButton *button = new QRightClickButton(this);
ui->gridLayout->addWidget(button);
connect(button, SIGNAL(rightClicked()), this, SLOT(onRightClicked()));

在MainWindow.cpp中创建一个插槽。
void MainWindow::onRightClicked()
{
    qDebug() << "User right clicked me";
}

这个对我有用!

10-02 04:53