在类QCustomPlot中有我想要在QWidget类的构造函数中使用的枚举,它使用类QCustomPlot。
#include "qcustomplot.h"
SignalViewerDialog::SignalViewerDialog(QVector<double> x_1,
QVector<double> y_1,
QCPScatterStyle::ScatterProperty ScatterProp,
QCPScatterStyle::ScatterShape ScatterShp,
QCPGraph::LineStyle LineSt,
QWidget *parent) : QDialog(parent)
ERROR
/Users/konstantin/Desktop/SVMGLEP/signalviewerdialog.cpp:72:ошибка:类型'const QCPScatterStyle'的引用无法绑定到'QCPScatterStyle :: ScatterProperty'类型的左值 ui.widgetGraph-&GT;图() - &GT; setScatterStyle(ScatterProp); ^ ~~~~~~~~~~
答案 0 :(得分:1)
这与在信号槽连接中传递枚举的问题无关,你需要在Qt元类型系统中注册枚举。这是普通C ++中的简单类型不匹配。
引用reference:
指定散点图样式
您可以通过调用相应的设置来设置所有这些配置 实例上的函数:
QCPScatterStyle myScatter; myScatter.setShape(QCPScatterStyle::ssCircle); myScatter.setPen(QPen(Qt::blue)); myScatter.setBrush(Qt::white); myScatter.setSize(5); customPlot->graph(0)->setScatterStyle(myScatter);
或者您可以使用采用不同参数的各种构造函数之一 组合,可以轻松地在单个中指定散布样式 打电话,像这样:
customPlot->graph(0)->setScatterStyle( QCPScatterStyle(QCPScatterStyle::ssCircle, Qt::blue, Qt::white, 5) );
您正在传递类型为QCPScatterStyle::ScatterProperty
的枚举,而不是类QCPScatterStyle
的对象。
编辑1:因此,您需要使用
ui.widgetGraph->graph()->setScatterStyle(QCPScatterStyle(ScatterProp));
编辑2:此外,我还要注意您使用CamelCase
作为enum
类型的函数参数的名称。也许你这样做是因为它们是枚举,但我建议再做一遍,因为在代码中它们似乎是实际的枚举值,而不是变量名。