我想编写一个通用的模板方法来计算一些东西并最终返回一个 typename T
的值。该值来自 QString,因此我需要将 QString 转换为指定的 typename T
。不幸的是,我只找到了 toDouble()
、toInt()
等方法。
我需要的是:
QString s = 3.1415;
double d = s.toType<double>();
float f = s.toType<float>();
int i = s.toType<int>();
我不想调用 toDouble()
、toInt()
,...因为我无法在编译时选择它们。
谢谢!
编辑:我可以编写我自己的专用模板函数来执行此操作。所以
double myOwnConvertFunction<double>(const QString& s)
然后会简单地调用 s.toDouble()
我认为 Qt 可能已经有一个内置的方式?
最佳答案
您可以转换 QString
至 QVariant
然后使用 value<T>()
QVariant(s).value<T>()
QVariant
与 QString
共享数据,所以这里没有发生深度复制,结果也应该很快。为了更加舒适,Qt 有
qvariant_cast<T>(s)
关于c++ - 如何使用模板将 QString 转换为类型名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33501139/