标签: qstring

现有C++项目的Qt UI

我已经编写了一个C++程序,我想为它编写一个GUI.我意识到Qt是一个很棒的工具,但是,Qt有它自己的类,这让我很困惑.例如:Qt有一个名为QString的类,而不是String.

我想知道我是否可以在C++中混合使用C++代码和Qt代码?

c++ user-interface qstring qt

5
推荐指数
1
解决办法
3152
查看次数

非QObject派生类应该"总是"放在堆栈上吗?

来自Symbian世界,我习惯尽可能多地使用堆来避免堆栈空间耗尽,尤其是在处理描述符时.CBase派生类总是在堆上动态分配,因为如果它们不是,它们的成员变量将保持未初始化.相同的约定是否适用于QObject派生类?

在Qt中,将(例如QString)放在堆栈上似乎很常见.当QString充当堆栈上的容器时,字符串内容是否放在堆上,或者是否所有内容都放在堆栈上?

qstring qt memory-management qobject

5
推荐指数
1
解决办法
1324
查看次数

如何有效地对 QByteArray 进行分区?

我想有效地对 QByteArray 消息进行分区,因此我实现的这个函数采用字节(我想要提取的部分)和 toEnd 标志,该标志告诉我是否要提取第 1 部分直到数组末尾。我的直径是 spcae ' '

例如,如果我有:

ba = "HELLO HOW ARE YOU?"
ba1 = getPart(ba, 1, false) -> ba1 = "HELLO"
ba2 = getPart(ba, 2, true) -> ba2 = "HOW ARE YOU?"
ba3 = getPart(ba, 3, false) -> ba3 = "ARE"
Run Code Online (Sandbox Code Playgroud)

下面的函数工作得很好,但我想知道这是否有效。我应该考虑使用 split 函数吗?

QByteArray Server::getPart(const QByteArray message, int part, bool toEnd)
{
    QByteArray string;
    int startsFrom = 0;
    int endsAt = 0;
    int count = 0;
    for(int i = 0; i < message.size(); i++) …
Run Code Online (Sandbox Code Playgroud)

string qstring qt substring qbytearray

5
推荐指数
1
解决办法
2万
查看次数

错误LNK2001:未解析的外部符号"__declspec(dllimport)public:class QString&__thiscall QString :: operator =(class QString &&)"

我很想找到有关上述错误的任何信息.

我正在研究visual studio 2010.当我编译我的项目(32位),在调试或发布时,我得到以下消息:

1> heterogeneous.obj:错误LNK2001:未解析的外部符号"__declspec(dllimport)public:class QString&_ thiscall QString :: operator =(class QString &&)"( _ imp _ ?? 4QString @@ QAEAAV0 @ $$ QAV0 @@ Z )

1> debug \nori.exe:致命错误LNK1120:1个未解析的外部

我在链接器 - >输入中链接了QtCore4.lib,我将Qt\4.8.2\lib添加到Linker-> General中的库目录,我包括Qt\4.8.2\include和Qt\4.8.2\include\QtCore在C/C++中 - >一般.在我看来,他们应该定义QString.我不知道还能做些什么.

非常感谢您的帮助.

c++ qstring visual-studio-2010 lnk2001

5
推荐指数
1
解决办法
7974
查看次数

QProcess 和命令行“/c”参数

我对 QProcess 有一个非常奇怪的问题,它的行为很奇怪。

我最后想要得到的是这样的东西(这是Windows 7中的cmd.exe)

C:\path_to_somewhere>cmd /c "C:\Program Files\path_to_dir\executable"
Run Code Online (Sandbox Code Playgroud)

(cmd是为了兼容QProcess的显示)

所以为了做类似的事情,我创建了这个:

QProcess proc;
QString command;
QStringList attributes;

command = "c:\\windows\\system32\\cmd.exe";
QStringList << QString("/c \"C:\\Program Files\\path_to-dir\\executable"");
proc.start(command, attributes);
Run Code Online (Sandbox Code Playgroud)

我得到的错误输出是:

Name '\"c:\Program Files\Quantum GIS Wroclaw\bin\gdalwarp.exe\"' is not recognized as
internat or external command, executable or batch file.
Run Code Online (Sandbox Code Playgroud)

(它是我从波兰语翻译过来的,所以英语可能有点不同)。

似乎 \ 字符在字符串中没有转义,而将 \" 保留为命令中的字符。我做错了什么?

我已经尝试过

proces.start(QString) 
Run Code Online (Sandbox Code Playgroud)

函数与三重“\”\”,它也不起作用。我想这个问题的解决方案必须非常简单,我什至都没有想到它。

qstring escaping qprocess

5
推荐指数
1
解决办法
6004
查看次数

如何从Qt中的字符串中删除重音符号/变音符号?

如何从Qt中删除字符串中的变音符号.例如,这个:

QString test = QString::fromUtf8("éçàÖœ");
qDebug() << StringUtil::removeAccents(test);
Run Code Online (Sandbox Code Playgroud)

应该输出:

ecaOoe
Run Code Online (Sandbox Code Playgroud)

string qstring qt diacritics

5
推荐指数
1
解决办法
3686
查看次数

有效地比较QString和std :: string是否相等

我想有效地比较QString和std :: string的(in)相等.哪种方法最好,可能没有创建中间对象?

c++ qstring qt std stdstring

5
推荐指数
1
解决办法
5893
查看次数

如何从QString获取const char*

我从一个带有UTF8编码的XML文件中读取了一个字符串.我将此值存储在一个QString对象中,并将其与其他一些信息连接起来.我可以在QtCreator调试器中看到它QString保存了所需的值.

我需要将此字符串传递给另一个带const char *参数的库.我如何获得const char *请?我试过toLocal8bit(),toLatin1(),toUtf8()都没有运气.好像我错过了什么......

c++ qstring qt qt-creator qtcore

5
推荐指数
1
解决办法
4105
查看次数

查找 QString 中的数字

例如,我有一个 QString,里面有一些数字

first_34.33string
second-23.4string // In this case number is negative
Run Code Online (Sandbox Code Playgroud)

如何从字符串中提取数字?

编辑:

这个函数似乎可以工作,在回复中使用正则表达式:

float getNumberFromQString(const QString &xString)
{
  QRegExp xRegExp("(-?\\d+(?:[\\.,]\\d+(?:e\\d+)?)?)");
  xRegExp.indexIn(xString);
  QStringList xList = xRegExp.capturedTexts();
  if (true == xList.empty())
  {
    return 0.0;
  }  
  return xList.begin()->toFloat();
}
Run Code Online (Sandbox Code Playgroud)

c++ qstring qt pattern-matching

5
推荐指数
1
解决办法
6328
查看次数

Qt QString to QByteArray and back

I have a problem with tranformation from QString to QByteArray and then back to QString:

int main() {

    QString s;

    for(int i = 0; i < 65536; i++) {
        s.append(QChar(i));
    }

    QByteArray ba = s.toUtf8();

    QString s1 = QString::fromUtf8(ba);

    if(areSame(s, s1)) {
        qDebug() << "OK";
    } else {
       qDebug() << "FAIL";
       outputErrors(s, s1);
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

As you can see I fill QString with all characters that are within 16bit range. and then convert them to QByteArray (Utf8) and …

c++ qstring qt qbytearray

5
推荐指数
2
解决办法
5373
查看次数