2017-06-22 87 views
1

在类QCustomPlot中,我想在QWidget类的构造函数中使用枚举,该类使用QCustomPlot类。在Qt插槽中使用枚举

#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-> graph() - > setScatterStyle(ScatterProp); ^ ~~~~~~~~~~

+0

建议的答案是否解决了问题?谢谢。 – iksemyonov

回答

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类的一个对象的传递QCPScatterStyle::ScatterProperty类型的枚举。

编辑1:因此,你需要使用

ui.widgetGraph->graph()->setScatterStyle(QCPScatterStyle(ScatterProp)); 

编辑2:我也想指出,你使用CamelCaseenum类型的函数参数的名称。也许你这样做是因为它们是枚举,但我建议不要这样做,因为以后在代码中它们看起来是实际的枚举值,而不是变量名称。