1. 将QPointF转成经纬度坐标字符串的时候,默认会丢失精度,导致计算错误,尤其是在转换成经纬度坐标的时候,可以发现偏差很大,所以在转换的时候需要指定精度。
QPointF p(1.23456789, 2.3456789);
QString p1 = QString("%1,%2").arg(p.x()).arg(p.y());
QString p2 = QString("%1,%2").arg(p.x(), 0, 'f', 10).arg(p.y(), 0, 'f', 10);
qDebug() << p1 << p2;
//p1=1.23457,2.34568 p2=1.2345678900,2.3456789000
  1. 在C++中经常会需要引入一些第三方或者系统的头文件,有时候你会发现,如果单单写个类,就引入这个文件,是没有任何问题的,而如果在前面还引入了Qt中的头文件比如 #include ,会编译通不过,报一些奇奇怪怪的问题,此时就要考虑引入的顺序问题,一般来说,要把Qt中的头文件放到后面来引入,就不会有问题,血淋淋的教训,折腾了很久才发现。貌似Qt中的头文件也会引入一些系统层面的头文件,而且还加了一些自己的定义,导致和第三方库的定义冲突了。一般来说msvc编译器最容易遇到这个现象,mingw出奇的正常。

  2. 当使用部分Qt内置的样式风格比如fusion的时候,QComboBox下拉框设置最大可见数量setMaxVisibleItems会失效,导致下拉框元素很多的时候,会填充整个屏幕,需要设置个样式就可以正常应用setMaxVisibleItems。ui->comboBox->setStyleSheet("combobox-popup:0;");

  3. 将字符串的浮点数转换成整型,会出现不可预期的结果,比如可能转换失败结果是0,不要以为这个转换会给你自动取整,其实不会的,除非本身是整型的字符串,这种规则只有在强类型的语言(比如c++/java)中才有,在弱类型的语言(比如js/python)中结果是正常的。这个规则要特别注意,那如果要正常转换怎么办?可以先转成浮点数再转整型即可。

QString s = "12.563";
//结果输出0
qDebug() << s.toInt();
//结果输出12
qDebug() << s.toFloat();
int i = s.toFloat();
  1. 关于QByteArray变量取值注意事项的衍生问题。
QString s = "abc";
//变量c的值很可能不正确/toUtf8后是个临时变量
char *c = s.toUtf8().data();
//需要分成两步
QByteArray b = s.toUtf8();
char *c = b.data(); //那么问题来了/下面这个b有没有问题
QByteArray b = s.toUtf8().toBase64();
//其实没有问题的/因为toBase64后返回的是一个新的对象
//99%的人看到c有问题以为b也有问题

Qt/C++开发经验小技巧316-320的更多相关文章

  1. Qt开发经验小技巧81-90

    Qt中的QColor对颜色封装的很完美,支持各种转换,比如rgb.hsb.cmy.hsl,对应的是toRgb.toHsv.toCmyk.toHsl,还支持透明度设置,颜色值还能转成16进制格式显示. ...

  2. Qt开发经验小技巧61-70

    很多人问Qt嵌入式平台用哪个好,这里统一回答(当前时间节点2018年):imx6+335x比较稳定,性能高就用RK3288 RK3399,便宜的话就用全志H3,玩一玩可以用树莓派香橙派. 对于大段的注 ...

  3. Qt开发经验小技巧41-50

    如果使用sqlite数据库不想产生数据库文件,可以创建内存数据库. QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); ...

  4. Qt开发经验小技巧71-80

    在我们使用QList.QStringList.QByteArray等链表或者数组的过程中,如果只需要取值,而不是赋值,强烈建议使用 at() 取值而不是 [] 操作符,在官方书籍<C++ GUI ...

  5. Qt开发经验小技巧51-60

    在某些http post数据的时候,如果采用的是&字符串连接的数据发送,中文解析乱码的话,需要将中文进行URL转码. QString content = "测试中文"; Q ...

  6. Qt开发经验小技巧31-40

    代码判断MSVC编译器版本. if (_MSC_VER == 1800) MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015) MSVC++ 12.0 _ ...

  7. Qt开发经验小技巧21-30

    如果出现Z-order assignment: is not a valid widget.错误提示,用记事本打开对应的ui文件,找到为空的地方,删除即可. 善于利用QComboBox的addItem ...

  8. Qt开发经验小技巧11-20

    获取类的属性 const QMetaObject *metaobject = object->metaObject(); int count = metaobject->propertyC ...

  9. Qt开发经验小技巧1-10

    当编译发现大量错误的时候,从第一个看起,一个一个的解决,不要急着去看下一个错误,往往后面的错误都是由于前面的错误引起的,第一个解决后很可能都解决了. 定时器是个好东西,学会好使用它,有时候用QTime ...

  10. Qt开发之Hello Qt及学习小技巧

    创建第一个Qt程序的简单流程 如果安装了andriod或ios的版本也会显示出来,这里只显示了桌面端的 一个项目文件代码结构如下: 如下图可直接编辑label里的文字内容: 运行结果:(快捷键ctrl ...

随机推荐

  1. 时间工具之“Java8 LocalDate 根据给定的日期,获取该日期上一周的周一周日,以及TemporalAdjusters的API”

    一.场景 我们的周报需要获取该月的第一个周的星期一和星期日,用于计算该星期的功能业绩(如:上产品数量) 2022-04-25 00:00:00 到 2022-05-01 23:59:592022-05 ...

  2. 彻底掌握 PCA 降维

    PCA 这类的降维算法, 我算是接触好几年了有, 从我学营销的时候, 市场研究方面就经常会用到,相关的还有 "因子分析" 比如, 商品形象认知, 客户细分等场景. 其实多年前我就能 ...

  3. 深挖diff算法:揭开代码版本控制神器的神秘面纱

    @charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...

  4. 操作系统 :AArch64体系--ARM最新编程架构模型剖析

    本节来讲讲 ARM 的 AArch64 体系结构,扩展一下视野. 看看什么是 AArch64 体系,然后分析一下 AArch64 体系有什么特点,最后了解一下 AArch64 体系下运行程序的基础,包 ...

  5. Java从小白到老白⑥

    一. 1.抽象类vs接口 相同 两者都不能实例化,不能new操作 不同 抽象类abstract 接口interface 抽象类可以用部分方法实现 接口所有方法不能有实现 一个类只能继承(extends ...

  6. [VulnHub]DC-2靶场全过程

    DC-2 信息收集 arp-scan -l nmap -sP 192.168.190.0/24 kali靶机:192.168.190.128 DC-2靶机:192.168.190.138 知道了靶机i ...

  7. [Java/模板渲染引擎/技术选型] 模板引擎-技术调研

    概述: 模板渲染引擎 := 模板引擎 为什么要使用[模板(渲染)引擎]?模板(渲染)引擎的作用? 模板引擎可以让(网站)程序实现界面与数据分离,业务代码与逻辑代码的分离,大大提升了开发效率,良好的设计 ...

  8. Ubuntu 通过 docker 部署禅道

    # 拉取镜像 docker pull easysoft/zentao:latest # 运行容器(简单配置) docker run --name zentao -p 8080:80 -e MYSQL_ ...

  9. Ubuntu 初始设置:启用 root 账户、启用密码登录、启用Key登录、ssh超时、修改主机名

    新购买的Ubuntu服务器,默认禁用了root账户,如果想启用root账户的公钥登录,请使用以下方法: vi /etc/ssh/sshd_config # 编辑ssh配置文件 PermitRootLo ...

  10. 解决DevToolsActivePort file doesn't exist

    今天遇到个小问题:selenium 启动 chrome crash,报错:DevToolsActivePort file doesn't exist. 在option中添加一下几行: option = ...