QT QChartView 点击跳转详细大图

需求 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); 参考 QtCharts图形移动和缩放...

2023-07-05 · 1 min · 104 words · RamLife

QT connect signal 和 slot 类型匹配

需求 qt 在使用 connect 连接时,有些时候因为类型匹配的问题,会报错: QPushButton * controller_button_[APP_NUM_OF_CONTROLLER]; QSignalMapper * signalMapper_; signalMapper_ = new QSignalMapper(this); for (int i = 0; i < APP_NUM_OF_CONTROLLER; i++) { controller_button_[i] = new QPushButton(this); connect(controller_button_[i], &QPushButton::clicked, signalMapper_, &QSignalMapper::map); signalMapper_->setMapping(controller_button_[i], i); } connect(signalMapper_, &QSignalMapper::mapped, this, &MainWindow::ClickDetail); mainwindow.cpp:173:9: error: no matching member function for call to 'connect' qobject.h:222:36: note: candidate function not viable: no known conversion from 'void (QAbstractButton::*)(bool) __attribute__((thiscall))' to 'const char *' for 2nd argument qobject....

2023-07-05 · 2 min · 278 words · RamLife