2017-06-22 84 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類型的函數參數的名稱。也許你這樣做是因爲它們是枚舉,但我建議不要這樣做,因爲以後在代碼中它們看起來是實際的枚舉值,而不是變量名稱。