if (lineEditText[i] == 'đ' || lineEditText[i] == 'Đ')
lineEditText.replace(i, 1, "d");
我想比较(i)类型QString上的字符与上面的unicode。但它不起作用。那我怎么比较呢?
答案 0 :(得分:2)
使用字符构建QString
并将其用于比较:
if (lineEditText[i] == QString("đ")[0] || lineEditText[i] == QString("Đ")[0])
或使用wide character literals,以便将它们正确地投射到QChar
:
if (lineEditText[i] == L'đ' || lineEditText[i] == L'Đ')
答案 1 :(得分:0)
您可以从其十六进制代码生成unicode字符并将其传递给QChar(uint(hexValue)
。只要双方的数据类型相同,您就可以与QChar的'=='进行比较。
uint unicodeCapitalD = 0x00D0
unit unicodeSmallD = 0x0111
if (lineEditText[i] == QChar(unicodeSmallD) || lineEditText[i] == QChar(unicodeCapitalD))
//whatever you want to do
修改:我之前的回答主要集中在生成QString containing the unicode character而不是QChar
。 QString::fromUcs4()
没有用,因为你试图将它与QLineEdit中的特定字符与unicode字符进行比较(我应该为比较生成一个QChar而不是QString)。