Кнопка QDialog Help [?] Не вызывает какое-либо событие - PullRequest
0 голосов
/ 03 октября 2019

Я создал следующий диалог с использованием класса форм QT Designer

#ifndef DLG_GAMMA_H
#define DLG_GAMMA_H

#include <QDialog>

namespace Ui {
class Dlg_Gamma;
}

class Dlg_Gamma : public QDialog
{
    Q_OBJECT

public:
    explicit Dlg_Gamma(QWidget *parent = nullptr);
    ~Dlg_Gamma() override;

private slots:
    void on_horizontalSlider_valueChanged(int value);
    void on_saveButton_clicked();
    void on_discardButton_clicked();
    void on_resetButton_clicked();

signals:
    void savechanges(QString filter);
    void discardchanges();
    void reset();

private:
    Ui::Dlg_Gamma *ui;
    bool eventFilter(QObject *target, QEvent *event) override;
    void closeEvent(QCloseEvent *dlg) override;
    bool close_X;

};

#endif // DLG_GAMMA_H

.cpp

bool Dlg_Gamma::eventFilter(QObject *target, QEvent *event)
{
    qDebug() << event->type();
}

Однако нажатие на кнопку справки не вызывает никакого события.

Кто-нибудь сталкивался с этой проблемой раньше? Кто-нибудь знает решение?

Ответы [ 2 ]

0 голосов
/ 04 октября 2019
bool MyDialog::event(QEvent *e)
{
// reimplement event processing
if(e->type()==QEvent::WhatsThisClicked)
{
QWhatsThisClickedEvent ce = static_cast<QWhatsThisClickedEvent>(e);
....
return true;
}
return QDialog::event(e);
}

Это ловушка событий. Чтобы использовать фильтр событий, необходимо установить его: installEventFilter(this) в конструкторе диалога.

0 голосов
/ 04 октября 2019

Вам необходимо установить eventFilter на «кнопку помощи» при использовании eventFilter.

Вам необходимо вставить приведенный ниже код в конструктор Dlg_Gamma

ui->helpButton->installEventFilter(this)

Длябольше информации, пожалуйста, обратитесь к информации ниже.

https://doc.qt.io/qt-5/eventsandfilters.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...