問題タブ [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 に答える
6310 参照

c++ - Q自分の型とのバリアント比較はできますか?

アップデート

ドキュメントが拡張されることを期待して、 qt バグチケットを作成しました。

元の質問

2010年からの質問Qtドキュメントを信じて、カスタムタイプではoperator==()機能しません。

見積もり:

bool QVariant::operator==(const QVariant & v) const

この QVariant を比較し、等しい場合はv返します。trueそれ以外の場合は を返しますfalse

QVariant含まれている type() の等価演算子を使用して等価性をチェックします。そのタイプがこのバリアントのタイプと同じでない場合QVariantに試みます。可能な変換のリストについては、convert() vを参照してください。canConvert()

警告:この関数は、 に登録されたカスタム タイプをサポートしていませんqRegisterMetaType()

2010 年の Stackoverflow Question から再現ケースを再現しようとしましたが、比較は問題なく機能しました。

また、さらに一歩進んで、完全に機能する独自のクラスを使用して比較を試みました。再現するには、次のコードを任意のヘッダーに挿入します。

そして、任意の関数に次のコード:

新しいqtバージョンでは、Q_DECLARE_METATYPE使用時に型のサイズが取得されるため、QVariantは未知の型の値をバイトごとに比較できると思います。

しかし、これは推測にすぎません。ドキュメントに頼らずに qt の機能を推測して、アプリケーションの安定性を危険にさらしたくはありません。

QVariant が未知の型をどのように比較するかを知ることはできますか? 実装よりも仕様に依存することを好みます。

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

c++ - QList を QVariant に変換する

クラスにはこれが含まれます:

Q_PROPERTY(QList<double> switch1 READ switch1 WRITE setSwitch1 NOTIFY switch1Changed)

以下は動作します:

しかし今、私のデータ型はQVariantListの代わりですQList<double>

QList を QVariant に置き換えるにはどうすればよいですか?

これは機能しません:

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

c++ - QVariant vs boost::any vs boost::variant

QVariant のような「汎用」コンテナーの 1 つに、さまざまな型 (int、float、QString、または std::string、bool) の値を効率的に格納する方法が必要です。

メモリ使用量を減らしてアーカイブしたい。

オーバーヘッドになるため、内部値の型を格納しないコンテナを好みます。

どちらを使用する必要がありますか?

0 投票する
0 に答える
244 参照

c++ - QSqlQuery および QT 4.8.4 を使用して取得すると、MS SQL テーブルの Uniqueidentifier フィールドが空になる

Windows マシンで MS SQL Server 9.0.4035 を使用しています。OpenSUSE 12.3 で安定した freetds 0.91 と unixODBC 2.2 を使用して接続しています。conf は次のとおりです。

freetds.conf:

odbc.ini :

tsql および isql で次の sql クエリを実行すると、次のようになります。

(これは、freetds のレベルではすべてが問題ないことを意味します。)

そして、私がこれをやっているときに得たのと同じです:

(これは、unixODBC のレベルではすべて問題ないことを意味します)。

しかし、Qt 4.8.4 で次のコード行を実行すると:

私が得たのは:

私は何をすべきか?

PS> Qt 5 が使えません。

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

c++ - Qt 4.8.5 QVariant 未解決の外部シンボル Visual Studio 2012

VS 2012 で最初の Qt プロジェクトをコンパイルしようとしています。Qt 4.8.5 オープンソースを使用しています。すべてをコンパイルし、VS2012 QT アドインをインストールしました。QT4のみQT5のアドインはないようです。

非常に基本的なアプリをコンパイルして実行していましたが、今は QTableView を使用してアプリを構築しようとしています。ModelView チュートリアルhereに基づいて、データベース クラスを構築しています。次のエラーが表示されます: CBDatabase.obj : error LNK2001: unresolved external symbol "public: virtual class QVariant __thiscall CBDatabase::data(class QModelIndex const &,int)const " (?data@CBDatabase@@UBE?AVQVariant@ @ABVQModelIndex@@H@Z)

QT5 VS2012 アドインが QT5 ライブラリをリンクしようとしていたため、QT4 ライブラリにリンクするようにリンカー プロパティを変更する必要がありました。

だから私の最善の推測は、適切なライブラリをリンクしていないということですが、どれが欠けているのかわからないようです。

ここに私のライブラリリストがあります: qtmaind.lib QtCored4.lib QtGuid4.lib QtSqld4.lib

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

c++11 - QSettings の QVariant の列挙型クラス

enum クラス、QVariants、および QSettings クラスに問題があります。QSettings インスタンスに入る QVariant 内に格納したい enum クラス値があります。したがって、私のコードは実際には次のようになります。

コード実行のこの時点で、アサーションが飛び込んで文句を言います。

インターネットを検索したところ、適切な << および >> 演算子がクラスにないことがわかりました。しかし、それは enum クラスのオプションではありません。私も使ってみました

しかし、それは役に立ちませんでした。他の提案/解決策があるかもしれません。ありがとう!