簡體   English   中英

如何將 int 轉換為 QString?

[英]How to convert int to QString?

是否有一個QString函數接受一個int並將其輸出為QString

使用QString::number()

int i = 42;
QString s = QString::number(i);

如果你想把它放在一些文本上下文中的字符串中,忘記+運算符。 只需這樣做:

// Qt 5 + C++11
auto i = 13;    
auto printable = QStringLiteral("My magic number is %1. That's all!").arg(i);

// Qt 5
int i = 13;    
QString printable = QStringLiteral("My magic number is %1. That's all!").arg(i);

// Qt 4
int i = 13;    
QString printable = QString::fromLatin1("My magic number is %1. That's all!").arg(i);

此外,要轉換任何你想要的,你可以使用QVariant 對於QStringint ,您會得到:

QVariant(3).toString();

一個float到一個string或一個string到一個float

QVariant(3.2).toString();
QVariant("5.2").toFloat();

另一種選擇是使用QTextStream<<運算符,其方式與在 C++ 中使用cout的方式大致相同:

QPoint point(5,1);
QString str;
QTextStream(&str) << "Mouse click: (" << point.x() << ", " << point.y() << ").";

// OUTPUT:
// Mouse click: (5, 1).

因為 operator <<()已經被重載,你可以將它用於多種類型,而不僅僅是int QString::arg()被重載,例如arg(int a1, int a2) ,但是沒有arg(int a1, QString a2) ,所以使用QTextStream()和 operator <<在格式化較長的字符串時很方便類型。

注意:您可能很想使用sprintf()工具來模仿 C 風格的printf()語句,但建議使用QTextStreamarg() ,因為它們支持 Unicode string

我總是使用QString::setNum()

int i = 10;
double d = 10.75;
QString str;
str.setNum(i);
str.setNum(d);

setNum()在很多方面都被重載了。 請參閱QString類參考。

以最簡單的形式,使用Georg Fritzsche的答案

對於有點高級,你可以使用這個,

QString QString::arg ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const

此處獲取文檔和示例..

如果您需要支持區域設置的數字格式,請改用 QLocale::toString。

為了完整起見,您可以使用標准庫並執行QString qstr = QString::fromStdString(std::to_string(42));

QLocale 有一種方便的數字轉換方法。 它的打字量並不比公認的答案多多少,但在浮點數的情況下更有用; 所以我喜歡這樣做。 這是一個int:

int i = 42;
QString s = QLocale::toString(i);

這是一個浮動:

float f=42.5;
QString s = QLocale::toString(f, 1);

最后一個參數是小數位數。 您還可以為第二個參數插入 char 格式參數,例如“f”或“e”。 這樣做的好處是,如果您的程序隨后在逗號用作小數點“點”的語言環境中運行,它將自動以這種方式打印。 它不包含在<QCoreApplication>之類的東西中,因此您當然必須在某處執行#include <QLocale> 它在格式化貨幣字符串方面真正發揮了作用。

可以寫:

QString s = QString::number(42.5, 'f', 1);

但根據幫助“與 QLocale::toString() 不同,此函數不遵守用戶的區域設置。”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM