概要
QString は int, double 等に対応する変換のメソッドがあります(number,setNum,arg,toInt,...)。
しかし、long double はプリミティブ型にも関わらず変換メソッドが用意されていません。
こういった場合は、std::string を経由することで変換できます。
例
long double → QString
#include <sstream>
#include <QString>
QString to_qstring(const long double value)
{
std::stringstream ss;
ss << value;
return QString::fromStdString(ss.str());
}
QString → long double
#include <sstream>
#include <QString>
long double to_long_double(const QString & str)
{
std::stringstream ss(str.toStdString());
long double value;
ss >> value;
return value;
}
補足:C++11以降の場合
C++11 以降であれば、std::stringとの変換メソッドがあります(std::to_string, std::stold)。
そのため、std::stringstream なしに変換できます。
long double → QString
#include <string>
#include <QString>
QString to_qstring(const long double value)
{
return QString::fromStdString(std::to_string(value));
}
QString → long double
#include <string>
#include <QString>
long double to_long_double(const QString & str)
{
return std::stold(str.toStdString());
}