1

QObject の動的プロパティを使用して、そのプロパティにアクセスできるスロットで使用される情報を保存しています。送信者は次の QState です。myQState->setProperty("key", QList<int>(0, 1, 2));

格納されたQVariantを QListに変換して、反復できるようにしたいと思います。次のコードは機能しません (エラー C2440: {[T=int] を使用して QVariant を QList に変換できません):

QVariant vprop = obj->property("key");
QList<int> list = vprop; //   < - - - - - - - - ERROR
foreach (int e, list )
{
    qDebug() << __FUNCTION__ << "" << e;
}

このコードは機能します。プロパティとして設定するオブジェクト:

QVariantList list;
list.append(0);
list.append(1);
list.append(2);

そしてスロットで

QObject *obj = this->sender();
foreach( QByteArray dpn, obj->dynamicPropertyNames() )
{
    qDebug() << __FUNCTION__ << "" << dpn;
}
QVariant vprop = obj->property("key");
qDebug() << __FUNCTION__ << "" << vprop;
QVariantList list = vprop.toList();
foreach(QVariant e, list )
{
    qDebug() << __FUNCTION__ << "" << e.toInt();
}
4

3 に答える 3

5

または使用QList<QVariant> QVariant::toList () const

QList<QVariant> list = vprop.toList();

そして、アイテムを繰り返し処理し、必要に応じてそれぞれを整数に変換します。

于 2013-09-26T13:35:38.910 に答える
3

使用してみてくださいQVariant::value

QList<int> list = vprop.value< QList<int> >();
于 2013-09-26T13:31:05.807 に答える