QVariant
をQStringList
と比較すると奇妙な結果が出ています。QStringListを比較したQVariants
コード:
QStringList l1, l2;
l1 << "";
l2 << "33" << "434";
const bool le = l1 < l2;
const bool ge = l1 > l2;
const bool eq = l1 == l2;
QVariant v1(l1), v2(l2);
const bool vle = v1 < v2;
const bool vge = v1 > v2;
const bool veq = v1 == v2;
私はl1
私の比較結果(le
、ge
とeq
)を修正値を期待しています。しかし、バリアントの結果にはまったく影響しません。私はいつもvge
== true、vle
とveq
は常にfalseです。
文書によれば、動作するはずです。私はどこか間違っているのですか、それともQtバグですか? 私はQt5.7を使用しています。
私はこの問題のためにバグレポートを埋めてきた
EDIT:https://bugreports.qt.io/browse/QTBUG-54893
私は、あなたがQVariants間の賢明な比較を期待すべきではないと言うだろうが、どうにか私はそれがバグだと強く思っています、実装:cf:https://code.woboq.org/qt5/qtbase/src/corelib/kernel/qvariant.cpp.html#_ZNK8QVariant7compareERKS_ – peppe