にはClass Buttons、btnRightClicked信号とmousePressEventスロットがあります。
void Buttons::mousePressEvent(QMouseEvent *e)
{
if(e->button() == Qt::RightButton) {
emit btnRightClicked();
}
}
では、次のように信号をスロットmainwindow.cppに接続します。btnRightClickedonRightClicked
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();
};