需求
qt 需要在 QChartView
被点击时,跳转详情页面。
解决
其实也简单,只需要 override
mousePressEvent
即可。
- 新建一个类
public
继承QChartView
- 在这个类里面重写
mousePressEvent
, 每当按下的时候发出Press
的信号 - 在前一个页面的代码中绑定
Press
这个信号和详情的页面。
这样就可以在点击图表的时候,发出信号,触发详情页面的打开。
#ifndef CHARTBRIEFVIEW_H
#define CHARTBRIEFVIEW_H
#include <QWidget>
#include <QtCharts/QChartGlobal>
#include <QtCharts/QChartView>
QT_CHARTS_BEGIN_NAMESPACE
class QChartView;
class QChart;
QT_CHARTS_END_NAMESPACE
QT_CHARTS_USE_NAMESPACE
class ChartBriefView : public QChartView
{
Q_OBJECT
public:
ChartBriefView(QChart *chart, QWidget *parent = nullptr);
signals:
void Press(int id);
private:
void mousePressEvent(QMouseEvent *event) override;
};
#endif // CHARTBRIEFVIEW_H
#include "chart_brief_view.h"
#include <QDebug>
ChartBriefView::ChartBriefView(QChart *chart, QWidget *parent) : QChartView(chart, parent)
{
}
void ChartBriefView::mousePressEvent(QMouseEvent *event)
{
qDebug() << "chart view press" << Qt::endl;
emit Press(0);
}
connect(chartView, &ChartBriefView::Press, this, &ControllerForm::ClickSensor);