在Qt插槽中使用枚举
问题描述:
在类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); ^ ~~~~~~~~~~
答
这有什么用枚举传递信号槽连接,你需要注册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:我也想指出,你使用CamelCase
为enum
类型的函数参数的名称。也许你这样做是因为它们是枚举,但我建议不要这样做,因为以后在代码中它们看起来是实际的枚举值,而不是变量名称。
建议的答案是否解决了问题?谢谢。 – iksemyonov