2017-06-22 10 views
1

クラスQCustomPlotには、QCustomPlotクラスを使用するQWidgetクラスのコンストラクタで使用する列挙型があります。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); 

かさまざまなパラメータを取るさまざまなコンストラクタの1つを使用できます 個の組み合わせなので、同様に、単一 呼び出しで散布スタイルを指定することが容易:

customPlot->graph(0)->setScatterStyle(
    QCPScatterStyle(QCPScatterStyle::ssCircle, Qt::blue, Qt::white, 5) 
); 

あなたはクラスQCPScatterStyleのオブジェクトの代わりに、タイプQCPScatterStyle::ScatterPropertyの列挙型を渡しています。

編集1:したがって、あなたが編集2

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

を使用する必要があります。また、私はあなたがタイプenumの関数パラメータの名前にCamelCaseを使用していることに注意したいと思います。たぶんあなたは列挙型なのでこれをやっているかもしれませんが、後でコード内で変数名ではなく実際の列挙型の値であるように見えるので、それをやり直すことをお勧めします。

関連する問題