問題タブ [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.
qt - QVariantは内部でどのように機能しますか?
知りたいのですが、QVariantが内部的に、int、QMap、QListなどを格納する方法...
内部データ構造/実装とは何ですか?QVariantで型(int、float)を格納および取得するオーバーヘッドはどれくらいですか?
c++ - QVariant とは何ですか? また、いつ使用する必要がありますか?
とは何QVariant
ですか? また、いつ使用する必要がありますか?
c++ - QVariant が QList のみを受け入れ、QVector や QLinkedList を受け入れない理由はありますか?
QVariantQList<QVariant>
は noではなく、受け入れるようにQVector<QVariant>
見えますQLinkedList<QVariant>
。それは単純に を見て、QList
基本的に (抽象的な意味で) データ構造が似ているからですか?QVector
QLinkedList
と を に追加しstd::vector
ていQVariant
ます。手動変換ではなく Qt API のみを使用する場合は、次の 2 つの変換が必要です。
- から
std::vector
までQVector
- から
QVector
までQList
PS:これstd::vector
をQVariant
直接追加できることは承知していますが、その場合、それがオブジェクトのベクトルであることを認識できないと思います。
qt - 「QList」の呼び方QVariant :: toList()const "
これは非常に単純でおそらくばかげた質問ですが、 QList QVariant :: toList()constの使用方法を忘れてしまいました
もちろんこれは間違っています、正しい方法は何ですか?:赤い顔:
qt - Qt列挙型の比較とQDebugへの出力
Qt メタオブジェクト システムに列挙型を登録しています。それらすべてにメタタイプ ID があることを再確認しましたが、すべてが完璧に見えます。しかし、それらの比較には未解決の問題があります。
コンボボックスを作成するためのこのコードを考えてみましょう:
私のリストには、列挙型の人間が読めるテキストが入力されます。
今、列挙型の値を含むQVariant自体を使用して、リストによって表示される初期値を設定しようとしています:
このコードは機能しません。テストを次のように置き換える必要があります。
このように動作します。
QVariants でカスタム列挙型の比較を有効にする方法を誰かに説明してもらえますか? または、リストのユーザーデータとして使用されているQVariantを作成しているときに何か間違ったことをしていますか?
また、リストを作成するためにループで作成された QVariants を qDebug() しようとすると、空の値が出力されます。たとえば、コードの最初のチャンクで生成される出力は次のようになります。
ご覧のとおり、値が正しく出力されていません...理由を教えてください。
ありがとう、ピエール。
unit-testing - QVariantを使用したユニットテスト
qvariantが正しいvlaueを保持しているかどうかを確認するために、qvariantを返す関数の単体テストを行いたいのですが、どのように進めればよいか教えてください。
qt - デストラクタでの QVariantMap のクラッシュ
Qt で JSON オブジェクトを作成し、QJson を使用して QString に変換しています。これは (通常) 正常に動作し、この場合は正常に動作しますが、私の Qt データ構造のデストラクタでは、アクセス違反でクラッシュします。オブジェクトは正常に構築され、ネットワーク接続を介して送信され、関数が終了した後、アプリケーションがクラッシュします。
私のコードは次のようになります。
構築される内側のループを削除するとentryList
、すべてが正常に機能します。のデストラクタはdata
内容を削除できないようですが、理由がわかりません。データ構造全体は、シリアル化中に問題ないように見えますが (QJson が指定されたデータで何も変更しないことを願っています)、クリーンアップできません..
よろしく、 トバイアス
qt - QVariant を QStringList に変換する
関数の呼び出し中に変数に格納QStringList
しました。ここで、このデータを変数から復元したいと思います。どうやってするの? QVariant
setData
QVariant
編集:変換を試みましたが、その仕組みがわかりません。
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_("シーン"); }