【发布时间】:2023-02-24 00:25:50
【问题描述】:
我无法理解 QVariant::canConvert 和 QVariant::toDouble 的行为。我希望如果底层变体数据是 QString,那么这两个都会返回 false,但我得到的结果不同,如下所示:
#include <QString>
#include <QVariant>
#include <QDebug>
int main(int argc, char *argv[])
{
QString not_a_number("foo");
QVariant variant(not_a_number);
auto can_convert_1 = variant.canConvert<double>();
auto can_convert_2 = false;
variant.toDouble(&can_convert_2);
qDebug() << can_convert_1 << can_convert_2; //prints: true false
}
canConvert 方法返回 true 而 toDouble 返回 false。
有人可以解释这种行为吗?
我在带有 Visual Studio 2019 的 Windows 上使用 Qt 5.15.7。
【问题讨论】: