問題タブ [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.
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 が未知の型をどのように比較するかを知ることはできますか? 実装よりも仕様に依存することを好みます。
c++ - QList を QVariant に変換する
クラスにはこれが含まれます:
Q_PROPERTY(QList<double> switch1 READ switch1 WRITE setSwitch1 NOTIFY switch1Changed)
以下は動作します:
しかし今、私のデータ型はQVariantList
の代わりですQList<double>
。
QList を QVariant に置き換えるにはどうすればよいですか?
これは機能しません:
c++ - QVariant vs boost::any vs boost::variant
QVariant のような「汎用」コンテナーの 1 つに、さまざまな型 (int、float、QString、または std::string、bool) の値を効率的に格納する方法が必要です。
メモリ使用量を減らしてアーカイブしたい。
オーバーヘッドになるため、内部値の型を格納しないコンテナを好みます。
どちらを使用する必要がありますか?
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 が使えません。
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
c++11 - QSettings の QVariant の列挙型クラス
enum クラス、QVariants、および QSettings クラスに問題があります。QSettings インスタンスに入る QVariant 内に格納したい enum クラス値があります。したがって、私のコードは実際には次のようになります。
コード実行のこの時点で、アサーションが飛び込んで文句を言います。
インターネットを検索したところ、適切な << および >> 演算子がクラスにないことがわかりました。しかし、それは enum クラスのオプションではありません。私も使ってみました
しかし、それは役に立ちませんでした。他の提案/解決策があるかもしれません。ありがとう!