Возникла такая проблема: создал класс, унаследовавшись от QPushButton и обнаружил, что не могу переопределить mouseReleaseEvent так как он не является виртуальным. Мне нужно, чтобы кнопка при нажатии на нее правой кнопкой реагировала по-другому, но, так как этот метод я не могу переопределить, то не знаю как это сделать. Вариант с наследованием от QAbstractButton рассматривать не хочется, так как QPushButton и так соответствует всем моим требованием (за исключением этого-вот момента).
Как заставить кнопку реагировать на правую кнопку мыши (выполнять действия отличные от тех, что выполняются при нажатии левой кнопки)?
UPD Данная проблема связана с опечаткой, вопрос, по-сути, не имеет смысла.
Согласно документации Qt http://doc.qt.io/qt-5/qwidget.html#mouseReleaseEvent
Метод QWidget::mouseReleaseEvent является виртуальным. Можете поподробней описать, как Вы пытались переопределить метод?
#include <QApplication>
#include <QPushButton>
#include <QDebug>
#include <QMessageBox>
class MyButton : public QPushButton
{
public:
MyButton(QWidget *parent = nullptr):
QPushButton(parent)
{
}
protected:
virtual void mouseReleaseEvent(QMouseEvent *event) override
{
QMessageBox::information(this, "", "WOW It's mouseReleaseEvent");
QPushButton::mouseReleaseEvent(event);
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyButton w;
w.setText("MY BUTTON");
w.show();
return a.exec();
}
Установите фильтр событий (installEventFilter) и добавляйте туда необходимую логику.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости