我试图在单击QwtPlot
时调用函数,但是,将信号连接到函数会失败。
当我运行这个最小的例子时
#include <QApplication>
#include <cassert>
#include <qwt_picker_machine.h>
#include <qwt_plot.h>
#include <qwt_plot_picker.h>
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
QwtPlot plot;
QwtPlotPicker picker{plot.canvas()};
picker.setStateMachine(new QwtPickerClickPointMachine);
auto connection = QObject::connect(
&picker,
qOverload<const QPointF &>(&QwtPlotPicker::selected),
[](const QPointF &point) { qDebug() << point.x() << point.y(); }
);
assert(connection);
return 0;
}
我在控制台输出中收到此QtWarningMsg
消息
在QwtPlotPicker中找不到QObject :: connect:signal
并且断言失败。
Qwt-documentation表示void QwtPlotPicker::selected(const QPointF &pos)
存在并且是一个信号
为什么没找到?
相反,这种连接工作正常:
auto connection = QObject::connect(
&plot,
&QwtPlot::windowTitleChanged,
[](const QString &title) { qDebug() << title; }
);
assert(connection);
该问题与qOverload
或QwtPlotPicker::selected
因
auto connection = QObject::connect(
&picker,
&QwtPlotPicker::activated,
[](bool) { qDebug() << "activated"; }
);
有同样的问题。
我使用Qwt 6.1.3和Qt 5.8.0-1与MinGW gcc 5.3.0-1。