私はQMLでの初心者ですとQQmlListPropertyを使用するためのサンプルコードを理解する難しさを持っている:QQmlListProperty <T>:次のゲッター関数はなぜ機能しますか?
私はなchartItemの民間m_barsを参照せず(chartitem.cppファイルで、このゲッター機能を理解していません。 hファイル):
QQmlListProperty<BarItem> ChartItem::bars()
{
return QQmlListProperty<BarItem>(this, 0,
&ChartItem::append_bar,0, 0, 0);
// where is the reference to m_bars ?
}
戻されるデータはどれですか?返されたデータを含めるべきであるprivate Qlist<BarItem*> m_bars
への参照はありません。ここで
が重要なヘッダのコードスニペットと実装ファイルです...
/*---------- chartitem.h file : -----------*/
class ChartItem : public QQuickPaintedItem
{
Q_OBJECT
Q_PROPERTY(QQmlListProperty<BarItem> bars READ bars NOTIFY barsChanged)
public:
ChartItem(QQuickItem *parent = 0);
void paint(QPainter *painter);
QQmlListProperty<BarItem> bars();
...
Q_SIGNALS:
void barsChanged();
private:
static void append_bar(QQmlListProperty<BarItem> *list, BarItem *bar);
QList<BarItem*> m_bars;
...
}
/*-----------------------------------------*/
/*------------- chartitem.cpp file --------*/
...
QQmlListProperty<BarItem> ChartItem::bars()
{
return QQmlListProperty<BarItem>(this, 0,
&ChartItem::append_bar,0, 0, 0);
// where is the reference to m_bars ?
}
void ChartItem::append_bar(QQmlListProperty<BarItem> *list, BarItem *bar)
{
ChartItem *chart = qobject_cast<ChartItem *>(list->object);
if (chart) {
bar->setParent(chart);
chart->m_bars.append(bar);
chart->barsChanged();
}
...
/*-----------------------------------------*/
誰かが推論で私のエラーを説明できますか? ありがとうございます。