qstring

源码必须是UTF-8,QString需要它

妖精的绣舞 提交于 2020-01-07 15:51:32
源码必须是UTF-8,QString需要它 来源 https://www.qt.io/cn/blog/2012/05/16/source-code-must-be-utf-8-and-qstring-wants-it Published on Wednesday May 16, 2012 by Debao Zhang in C++ Qt qtearth-blogs-chinese | Comments 原文链接: Thiago Macieira - Source code must be UTF-8 and QString wants it 先前 我讨论过源代码的编码问题,认为C++语言缺少一个必要的基本设置。尽管如此,从本周一开始,在某种程度上,Qt5现在已开始强制要求源代码必须是UTF-8。 将QString的8-bit成员函数所用的编码改为UTF-8的提交(commit)终于融入到 qtbase代码仓库 中。这正是我们为Qt5所规划的,从Robin Burchell移除 QTextCodec::setCodecForCStrings 开始的,一系列变更(changes)画上了完美的句号。但明确一点:QString内部仍采用UTF-16存储数据且不会改变。 为了理解这个变更是什么,我们需要回顾一点点历史。四年前, 我写了一篇叫做“字符串理论(String Theory)”的博客

QT中.arg的用法

試著忘記壹切 提交于 2020-01-07 03:16:49
QString中的arg方法类似于“C中的printf中使用的格式输出符”和“C++中string的append方法”的结合体。 常用的两种格式如下: 1、用于填充字符串中的%1,%2…为给定的参数,如 Qstring X="0"; Qstring Y="1"; Qstring Z="2"; QString status = QString(NUMBER: %1 %2 %3 !") .arg(X).arg(Y).arg(Z); 结果:NUMBER:012 2、 QString::arg ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const 这个方法用于填充字符串中的%1,%2…为给定格式的整形数字,其中第一个参数是要填充的数字,第二个参数为最小宽度,第三个参数为进制,第四个参数为当原始数字长度不足最小宽度时用于填充的字符,如 QString text = QString("%1:%2") .arg(123, 5, 10, QChar('0')) .arg(456, 5, 10, QChar('0')); 结果:text = “00123:00456” 来源: CSDN 作者: 阿呆728 链接: https://blog.csdn.net

In Qt, how to setCodecForCStrings globally (in header)?

萝らか妹 提交于 2020-01-06 02:38:08
问题 I'm developing a bunch of Qt applications in C++ and they all use some modules (translation units) for common functionality that use Qt as well. Whenever I convert a C string (implicit conversion) or C++ string object (fromStdString()) to a QString object, I expect the original data to be UTF-8 encoded and vice versa (toStdString()). Since the default is Latin-1, I have to set the codec "manually" (in the init procedure of every one of my programs) to UTF-8: QTextCodec::setCodecForCStrings

QT项目性能调优小记

笑着哭i 提交于 2020-01-04 22:46:54
最近的项目用到了QT 5.5,项目在运行过程中出现了一段时间CPU占用率持续25%,并频繁断网的情况,遂决定对项目性能进行优化。 优化工具也是VS2010自带的性能分析工具,具体的使用方法参见: http://www.cnblogs.com/smark/archive/2011/10/12/2208039.html 其中可以选择“just my code”过滤出自己编写的代码。 通过性能分析工具可以找到占用CPU时间较多的函数,然后按照占有时间多少进行优化->再分析->再优化的步骤,多次优化后,将CPU占用率降到了2%以下。下面将对性能优化提升较大的几个优化步骤进行记录: 1.优化字符串格式化方法。 项目中有将QByteArray中的二进制数如”123”格式化成”31, 32, 33”的功能,使用的代码如下: 1 QByteArray msg = xxx 2 3 QString str; 4 5 foreach (quint8 b, msg) 6 7 { 8 9 str.append(QString().sprintf(“%02X”, b)); 10 11 } View Code 当msg中包含6,7w个字符时,在lz酷睿2代i5的机器上,这段代码需要执行4到5s,因为其中的QString会调用new函数6,7w此,对性能影响极大。优化后的代码如下: 1 QString

Concatenate stl string+int+int+int in QString [duplicate]

走远了吗. 提交于 2020-01-03 05:17:09
问题 This question already has answers here : Closed 7 years ago . Possible Duplicate: Concatenating two QStrings with an integer i'm looking forward to create a a string from 3 ints and one c++ stl string in QT, how can i do this? anyone know?, can't find something thats explain this procces? this is my code were i create the elements in a lsit, but i want to print all elements and theyr properties not only name: void Window::listMovies(){ ui->listMovies->clear(); vector <Movie> all = ctrl-

QProcess

本小妞迷上赌 提交于 2020-01-02 18:11:53
QString Operation::run_sys_cmd(QString cmd){ QProcess *proc = new QProcess; QByteArray result_tmp; QString result; proc->start(cmd); if (!proc->waitForStarted()){ return "cmd err for started"; } if (!proc->waitForFinished()){ return "cmd err for finished"; } result_tmp.append(proc->readAll()); result = result_tmp; delete proc; if(result == "")return "cmd return \"\" "; return result; } 来源: CSDN 作者: 瑞瑞瑞 链接: https://blog.csdn.net/chenmeiceng/article/details/103807520

Totalview get the value of QString

落爺英雄遲暮 提交于 2020-01-02 10:34:04
问题 When I double clicked on QString object in totalview debugger this window appears. How can I get the exact value of it. I have tried command.toUtf8().constData() but it prints Cannot find name "toUtf8" . 回答1: ::TV::TTF::RTF::build_struct_transform { name {^struct QString$} members { { ascii { $wstring_u16 cast { * { d -> unicode } } } } } } ::TV::TTF::RTF::build_struct_transform { name {^struct QString$} members { { ascii { $wstring_u16 cast {* {d -> data} } } } } } Add this to $HOME/.tvdrc

Totalview get the value of QString

◇◆丶佛笑我妖孽 提交于 2020-01-02 10:33:58
问题 When I double clicked on QString object in totalview debugger this window appears. How can I get the exact value of it. I have tried command.toUtf8().constData() but it prints Cannot find name "toUtf8" . 回答1: ::TV::TTF::RTF::build_struct_transform { name {^struct QString$} members { { ascii { $wstring_u16 cast { * { d -> unicode } } } } } } ::TV::TTF::RTF::build_struct_transform { name {^struct QString$} members { { ascii { $wstring_u16 cast {* {d -> data} } } } } } Add this to $HOME/.tvdrc

How to make a QString from a QTextStream?

烂漫一生 提交于 2020-01-02 02:47:07
问题 Will this work? QString bozo; QFile filevar("sometextfile.txt"); QTextStream in(&filevar); while(!in.atEnd()) { QString line = in.readLine(); bozo = bozo + line; } filevar.close(); Will bozo be the entirety of sometextfile.txt? 回答1: Why even read line by line? You could optimize it a little more and reduce unnecessary re-allocations of the string as you add lines to it: QFile file(fileName); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) return; QTextStream in(&file); QString text;

Qt学习之路_4(Qt UDP的初步使用)

≯℡__Kan透↙ 提交于 2020-01-02 00:44:56
  为了使用Qt自带的Socket进行网络编程,先必须熟悉Socket编程的原理,另外还需对Qt一些基本类的操作比较熟悉。由于刚接触不久,所以还是以看人家的代码来学习。这次主要是学Qt下UDP的编程,且熟悉一些Qt下代码的编写流程,所以本文参照的是《Qt及Qt Quick开发实战精解》一书中的第5个例子:局域网聊天工具中的UDP聊天部分。 另外 http://www.yafeilinux.com/ 上有其源码和相关教程下载。 该程序实现的功能是:局域网内,每个用户登录到聊天软件,则软件界面的右端可以显示在线用户列表,分别显示的是用户名,主机名,ip地址。软件左边那大块是聊天内容显示界面,这里局域网相当于qq中的qq群,即群聊。每个人可以在聊天输入界面中输入文字并发送。其聊天界面如下:    该程序实现的是每个用户登录既是客户端又是服务器端,这就需要看你站在哪个角度看问题了。简单的说,当用户发送信息给别人时就是客户端,当接收别人的信息是就可以看做是服务器端。   下面分服务器端和客户端2部分来介绍。   服务器端:建立一个UDP Socket并绑定在固定端口后,用信号与槽的方式进行监听是否有数据来临。如果用,接收其数据并分析数据的消息类型,如果消息是新用户登录则更新用户列表并在聊天显示窗口中添加新用户上线通知;同理,如果是用户下线