我在一个正在研究图形和GUI组件的软件系统中广泛使用Qt.但是,对于大多数内部算法和数据处理,Qt起着较小的作用.
我经常会遇到从std :: string转换为QString的需要,反之亦然.我倾向于尽可能多地使用std :: string,并且只有当我需要将字符串传递给Qt类时才使用QString,就像那些使用文件系统的类一样.
正如我今天早上编程的那样,让我觉得在我的代码中散布std :: string和QString可能是一个糟糕的设计.我应该完全切换到QString吗?还有其他人遇到过这种设计选择吗?
Qt提供了许多与STL相同的功能,但由于Qt不太标准化和稳定,我仍然犹豫不决.
我发现了我朋友的Qt代码,他在两个上使用模运算符,QString如下所示:
QString result = oneString % twoString;
Run Code Online (Sandbox Code Playgroud)
这是什么意思?
按照本文档和本文档,我将在for循环中使用QStringBuilder.我应该应用它的代码是
QStringList words;
QString testString;
for (auto it = words.constBegin(); it != words.constEnd(); ++it)
{
testString += "[" + *it + "] ";
}
Run Code Online (Sandbox Code Playgroud)
但是我不明白如何编写它来使用QStringBuilder,因为我在做一个赋值,而QStringBuilder要求我使用%运算符,并且只在文档后面做一个赋值.
我正在寻找拆分QString.QString中有几个单词,由以下符号中的一个或多个(!)分隔:
我只想提取单词.基本上,我试图复制Python str.split()函数的行为.
我知道我可以使用正则表达式来实现这一点,但它会是什么样子?任何其他直接实现这一目标的方法也是受欢迎的.
我正在寻找一种简单而万无一失的方法来将任意转换QStringList为单个QString和后退.
QStringList fruits;
fruits << "Banana", "Apple", "Orange";
QString packedFruits = pack(fruits);
QStringList unpackFruits = unpack(packedFruits);
// Should be true
// fruits == unpackFruits;
Run Code Online (Sandbox Code Playgroud)
对于这类问题,最简单的解决方案是什么?
这会有用吗?
QString bozo;
QFile filevar("sometextfile.txt");
QTextStream in(&filevar);
while(!in.atEnd()) {
QString line = in.readLine();
bozo = bozo + line;
}
filevar.close();
Run Code Online (Sandbox Code Playgroud)
bozo会不会是sometextfile.txt的全部内容?
想象一下,我有一个包含这个的QString:
"#### some random text ### other info
a line break ## something else"
Run Code Online (Sandbox Code Playgroud)
我怎样才能知道我的QString中有多少哈希?换句话说,如何从这个字符串中获取数字9?
感谢答案,解决方案非常简单,忽略了在使用count()方法的文档中,您可以传递您正在计算的参数.
对于其他类型,我可以轻松地做类似的事情
mitm.created().toString("yyyy-MM-dd")
Run Code Online (Sandbox Code Playgroud)
是否有类似的功能将qint64转换为QString?你可以在下面找到代码.
fileArray.append("[");
foreach(QFileInfo mitm, mDir.entryInfoList(QDir::Files)){
fileArray.append("{\"filePath\": \"");
fileArray.append(mitm.absoluteFilePath());
fileArray.append("\",");
fileArray.append("\"fileCreated\": \"");
fileArray.append(mitm.created().toString("yyyy-MM-dd"));
fileArray.append("',");
fileArray.append("'fileSize': '");
// fileArray.append(mitm.size());
fileArray.append("\"}");
if(fileCount!=mDir.entryInfoList(QDir::Files).count()-1){ fileArray.append(","); }
fileCount++;
}
fileArray.append("]");
Run Code Online (Sandbox Code Playgroud)
我已经注释掉了破坏代码的行.我有相同的日期问题,但用toString来转换它.我希望qint64会有类似的解决方案.
我有一个QDateEdit在我的GUI中,我将其转换QDate为QString并将其添加到我的数据库.该QString日期被保存在这种格式的数据库:20/12/2015.
如果用户想要编辑日期,那么我需要QDateEdit再次在GUI 上的字段上显示日期.因此,我需要获取数据库,带回日期(QString格式为)并将其QDate再次转换回来,以便将其放在QDateEditGUI 上的字段上.
但是,我无法将该QString格式(即:2015年12月20日)转换为QDate使用以下内容:
QString date_string_on_db = "20/12/2015";
QDate Date;
Date.fromString(date_string_on_db,"dd/MM/YYYY");
Run Code Online (Sandbox Code Playgroud)
将Date总是返回invalid.
我该怎么办 ?
我想在字符串上使用.arg().这是一个例子:
qDebug() << QString("%11%2").arg(66).arg(77);
Run Code Online (Sandbox Code Playgroud)
我想得到输出,66177但当然这不是实际输出,因为%11被解释为占位符#11而不是占位符#1后跟一个文字1.
有没有比以下更好的解决方案?
qDebug() << QString("%1%2%3").arg(66).arg(1).arg(77);
Run Code Online (Sandbox Code Playgroud)