在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();
};