問題タブ [qvariant]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2236 参照

qt - QVariantは内部でどのように機能しますか?

知りたいのですが、QVariantが内部的に、int、QMap、QListなどを格納する方法...

内部データ構造/実装とは何ですか?QVariantで型(int、float)を格納および取得するオーバーヘッドはどれくらいですか?

0 投票する
2 に答える
5406 参照

c++ - QVariant とは何ですか? また、いつ使用する必要がありますか?

とは何QVariantですか? また、いつ使用する必要がありますか?

0 投票する
4 に答える
8283 参照

c++ - QVariant が QList のみを受け入れ、QVector や QLinkedList を受け入れない理由はありますか?

QVariantQList<QVariant>は noではなく、受け入れるようにQVector<QVariant>見えますQLinkedList<QVariant>。それは単純に を見て、QList基本的に (抽象的な意味で) データ構造が似ているからですか?QVectorQLinkedList

と を に追加しstd::vectorていQVariantます。手動変換ではなく Qt API のみを使用する場合は、次の 2 つの変換が必要です。

  1. からstd::vectorまでQVector
  2. からQVectorまでQList

PS:これstd::vectorQVariant直接追加できることは承知していますが、その場合、それがオブジェクトのベクトルであることを認識できないと思います。

0 投票する
2 に答える
3546 参照

qt - 「QList」の呼び方QVariant :: toList()const "

これは非常に単純でおそらくばかげた質問ですが、 QList QVariant :: toList()constの使用方法を忘れてしまいました

もちろんこれは間違っています、正しい方法は何ですか?:赤い顔:

0 投票する
1 に答える
1494 参照

qt - Qt列挙型の比較とQDebugへの出力

Qt メタオブジェクト システムに列挙型を登録しています。それらすべてにメタタイプ ID があることを再確認しましたが、すべてが完璧に見えます。しかし、それらの比較には未解決の問題があります。

コンボボックスを作成するためのこのコードを考えてみましょう:

私のリストには、列挙型の人間が読めるテキストが入力されます。

今、列挙型の値を含むQVariant自体を使用して、リストによって表示される初期値を設定しようとしています:

このコードは機能しません。テストを次のように置き換える必要があります。

このように動作します。

QVariants でカスタム列挙型の比較を有効にする方法を誰かに説明してもらえますか? または、リストのユーザーデータとして使用されているQVariantを作成しているときに何か間違ったことをしていますか?

また、リストを作成するためにループで作成された QVariants を qDebug() しようとすると、空の値が出力されます。たとえば、コードの最初のチャンクで生成される出力は次のようになります。

ご覧のとおり、値が正しく出力されていません...理由を教えてください。

ありがとう、ピエール。

0 投票する
2 に答える
79 参照

unit-testing - QVariantを使用したユニットテスト

qvariantが正しいvlaueを保持しているかどうかを確認するために、qvariantを返す関数の単体テストを行いたいのですが、どのように進めればよいか教えてください。

0 投票する
2 に答える
1507 参照

qt - デストラクタでの QVariantMap のクラッシュ

Qt で JSON オブジェクトを作成し、QJson を使用して QString に変換しています。これは (通常) 正常に動作し、この場合は正常に動作しますが、私の Qt データ構造のデストラクタでは、アクセス違反でクラッシュします。オブジェクトは正常に構築され、ネットワーク接続を介して送信され、関数が終了した後、アプリケーションがクラッシュします。

私のコードは次のようになります。

構築される内側のループを削除するとentryList、すべてが正常に機能します。のデストラクタはdata内容を削除できないようですが、理由がわかりません。データ構造全体は、シリアル化中に問題ないように見えますが (QJson が指定されたデータで何も変更しないことを願っています)、クリーンアップできません..

よろしく、 トバイアス

0 投票する
1 に答える
8549 参照

qt - QVariant を QStringList に変換する

関数の呼び出し中に変数に格納QStringListしました。ここで、このデータを変数から復元したいと思います。どうやってするの? QVariantsetDataQVariant

編集:変換を試みましたが、その仕組みがわかりません。

0 投票する
1 に答える
1268 参照

qt - QStandardItemModel を QVariant に変換します

QStandardItemModel 派生オブジェクトを PythonQt に送信しようとしていますが、どのように送信する必要があるかについて少し混乱しています。boost::python を使用していたとき、boost::noncopyable のようないくつかのコントロールを使用して、このオブジェクトを再作成するのではなく、Python と共有していることを確認しました。また、python 内から python へのブースト共有ポインターを提供するための構造もありました。

class Scene : public boost::enable_shared_from_this<Scene>, public QStandardItemModel

ただし、PythonQt では、何が利用できるのかわかりません。この関数callは、すべての関数パラメーターに対して QVariantList を取ります。

QVariant PythonQt::call(PyObject* object, const QString &callable, const QVariantList &args = QVariantList))

私が今混乱しているのは、QVariant を介してオブジェクトを python に取得する方法です。QStandardItemModel から派生したので、既に登録されていると思いました

しかし、これにより次のエラーが発生します。

'qt_metatype_id' : is not a member of 'QMetaTypeId<MyObject>'

クラスを宣言した後に登録しようとしましたが、これは別のエラーをスローします。

Q_DECLARE_METATYPE を追加するヘッダーと、常に QStandardItemModel から派生するがそれ以外は無関係なクラスを持つ別のヘッダーで、実際に 2 回エラーが発生します。

Q_DECLARE_METATYPE は、このオブジェクトを QVariant に変換する正しい方法ですか?

BOOST_PYTHON_MODULE(シーン) { class_("シーン"); }