QString::number(0)和之间有什么区别((const char*) 0)?
我想初始化一个QString说phoneNumber来null.威尔phoneNumber(QString::number(0))和phoneNumber((const char*) 0)两者都有效吗?
我需要在QListView中将选定的项目名称作为QString.我试过谷歌,但我还没发现任何有用的东西.
你有更好的方法吗?
QString str("I am a long long long"
+ QString("long long long")
+ QString("long QString") );
Run Code Online (Sandbox Code Playgroud)
我不喜欢所有这些QString.
我必须使用类型函数的输出,const char*我需要将其转换为QString.
注意:在该函数内部,这些是返回的代码行 const char*
char* ClassA::getData() const{
return const_cast<char *> (_foo.c_str());
}
Run Code Online (Sandbox Code Playgroud)
哪里_foo是std::string.
我尝试使用以下代码行但总是得到空字符串(实际上不是空的但只包含新的行字符而忽略所有其他字符).
QString foo1 = QString(temp.getData());
QString foo2 = QString::fromLocal8Bit(temp.getData());
QString foo3 = QString(QLatin1String(temp.getData()));
QString foo4 = QString::fromAscii(temp.getData());
QString foo5 = QString::fromUtf8(temp.getData());
Run Code Online (Sandbox Code Playgroud) 实现<< for QString是有道理的:
std::ostream& operator <<(std::ostream &stream,const QString &str)
{
stream << str.toAscii().constData(); //or: stream << str.toStdString(); //??
return stream;
}
Run Code Online (Sandbox Code Playgroud)
而不是写作
stream << str.toAscii().constData();
Run Code Online (Sandbox Code Playgroud)
每次都在代码中.
但是,由于它不在标准Qt库中,我假设有任何特殊原因不这样做.如上所述,超载<<的风险/不便是什么?
我有这样一个部门:
number / 1000.0
Run Code Online (Sandbox Code Playgroud)
有时它会给出96.0000000001这样的答案,有时候除法会按预期运行.
我想将我的数字限制为最多两个小数位并且没有尾随零.
如果它是96.5500000001它应该显示96.55.
如果是96.4000000001则应显示96.4
可以用这种方式格式化字符串吗?
我检查了文档,它提供了'f'参数来指定小数位数,但这样尾随的零保持不变.这是我尝试过的:
QString::number(number / 1000.0, 'f', 2)
Run Code Online (Sandbox Code Playgroud)
但这给了我96.4000000001 - > 96.40而不是96.4
有解决方案吗 我怎样才能以这种方式格式化?
因此,当您使用qDebug()打印QString时,输出中会突然出现引号.
int main()
{
QString str = "hello world"; //Classic
qDebug() << str; //Output: "hello world"
//Expected Ouput: hello world
}
Run Code Online (Sandbox Code Playgroud)
我知道我们可以使用qPrintable(const QString)来解决这个问题,但我只是想知道为什么QString会像那样工作?并且QString中是否有一个方法来改变它的打印方式?
出于调试目的,我经常将指针值(大多数this)输出到qDebug:
qDebug("pointer of current object = 0x%08x",this);,使用"%08x"作为格式字符串,只是this作为参数传递.
如何将指针值转换为QString?
这是我到目前为止所得到的:
char p = (char)this;
return QString("0x%1").arg(p, 8, '0');
Run Code Online (Sandbox Code Playgroud)
但编译器似乎并没有弄清楚如何处理该值.char在这种情况下铸造是否正确?或者更安全的方法是什么?
使用Visual C++和Qt 4.7.4.
编辑
qulonglong按建议使用
qulonglong p = (qulonglong)this;
return QString("0x%1").arg(p, 8, '0');
Run Code Online (Sandbox Code Playgroud)
产生编译器错误消息(错误C2666).
我正在使用PyQt5但无法导入QStringList.我知道QStringList曾经在PyQt4的模块QtCore中.所以我尝试使用导入类
from PyQt5.QtCore import QStringList
Run Code Online (Sandbox Code Playgroud)
但它显示了这个错误
C:\Python34\python.exe C:/Users/User/PycharmProjects/FirstProject/Test.py
Traceback (most recent call last):
File "C:/Users/User/PycharmProjects/FirstProject/Test.py", line 3, in <module>
from PyQt5.QtCore import QStringList
ImportError: cannot import name 'QStringList'
Run Code Online (Sandbox Code Playgroud)
我正在使用PyCharm,它在自动完成中显示一个名为QStringListModel的东西.我正在阅读Mark Summerfield撰写的"使用Python和Qt进行快速GUI开发"一书.如何在PyQt5中使用QStringList或其他任何可以完成QStringList工作的东西?
我想使用QString和QStringList中,但在PySide 1.1.0,他们不是模块,而不是在documents.so,我能做些什么用them.thank you.Not刚刚的QString和QStringList中,我找不到QTableModel ,QListModel等.