在Class Buttons中,我有一个btnRightClicked信号和一个mousePressEvent插槽:
void Buttons::mousePressEvent(QMouseEvent *e)
{
if(e->button() == Qt::RightButton) {
emit btnRightClicked();
}
}
在 中mainwindow.cpp,我将btnRightClicked信号连接到onRightClicked插槽,如下所示:
connect(&mButtons, SIGNAL(btnRightClicked()), this, SLOT(onRightClicked()));
onRightClicked插槽是这样的:
void MainWindow::onRightClicked()
{
qDebug() << "right clicked";
}
但是我运行了这个程序,什么也没发生。我猜原因是因为我没有连接到mousePressEvent插槽。我对Qt有点陌生,我不知道我是否正确。
我在中央小部件上设置了一些按钮,我希望它们在右键单击每个按钮时具有右键单击事件。那么我怎样才能使这项工作呢?
谢谢
编辑:在button.h:
class Buttons : public QObject
{
Q_OBJECT
public:
Buttons();
QVector<QPushButton*> buttons;
void setButtons(int totalBtns) {
for(int i = 0; i < totalBtns; i++) {
buttons[i]->setObjectName(QString::number(i));
buttons[i]->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
}
}
public slots:
void mousePressEvent(QMouseEvent *e) {
if(e->button() == Qt::RightButton) {
emit btnRightClicked();
}
}
signals:
void btnRightClicked();
};