qt无法正常输出中文怎么办
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt无法正常输出中文怎么办相关的知识,希望对你有一定的参考价值。
参考技术A 第一种情况的解决办法:首先,在Qt Creator中点击菜单“编辑”-“Select Encoding...”。
然后,在弹出的文本编辑窗口中选择“UTF-8”,再点击“按编码重新载入”。
这时,代码编辑器中的文本就会恢复正常显示了。
第二种情况的解决办法:
先点击菜单“工具”-“选项”。
在选项窗口中,在左侧切换到“文本编辑器”,再在右侧选中“行为”选项卡,最后将默认编辑改为“UTF-8”,将UTF-8 BOM改为“目前存在了则保留”,再点击“OK”关闭窗口。
现在,重新编译运行程序,就会发现已经能够正常显示了。
第三种情况在实际操作中极少发生,多半与当前系统出现故障有关。如果确信当前系统没有问题,则有可能是Qt本身安装出错,建议卸载Qt所有组件后重装。本回答被提问者采纳
Qt rand() 无法正常工作
【中文标题】Qt rand() 无法正常工作【英文标题】:Qt rand() doesn't work properly 【发布时间】:2017-04-13 09:34:53 【问题描述】:我想显示从 0 到 99 999 的 1000 个随机数。但这有一个奇怪的问题。它显示了 1000 个数字,但没有一个高于 aprox。 35 000。这是为什么呢?
#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
int main(int argc, char *argv[])
QApplication a(argc, argv);
MainWindow w;
w.show();
int ran;
qsrand(qrand());
for (int i=0; i<1000; i++)
ran = qrand() % 100000;
qInfo() << ran;
return a.exec();
控制台显示给我的是:
18103 76 22033 25191 5349 13724 11988 25919 32568 20303 17393 14983 4038 443 16566 18275 8687 23110 24124 31899 20267 2336 22086 3570 6406 29490 32107 13236 29800 8273 18552 10895 6682 22968 16656 26019 16518 3253 11669 9948 8894 17826 28748 29056 30912 22295 25019 2820 17657 350 10838 32292 6919 11815 24411 21555 17347 5245 26363 30895 25215 22777 26554 31512 32652 32310 18200 8962 7168 14724 31601 2666 12981 32737 13602 12870 19093 24357 8941 17759 32277 30588 21919 32099 7168 10521 1775 24118 17782 18985 18346 15242 11572 30982 22797 15535 23574 24238 13682 21164 7897 30067 3120 21646 294 10228 13500 13824 31180 23627 23828 3100 11342 16264 30557 21633 25501 25951 10954 12966 10790 4125 19393 5998 8975 13536 7993 1788 2238 4104 28007 28872 29852 24041 10137 19954 21528 3010 9570 31191 12014 29939 15607 30947 8873 106 15065 8614 14182 12895 31924 23593 29148 1601 13191 27522 18073 9456 4358 30118 21134 19244 25661 15743 31950 29774 26997 17214 26003 7477 20827 16115 18050 13188 17247 10586 10288 1291 24411 18168 4324 17282 629 26983 4255 28797 21318 23279 20057 17820 22844 10326 31374 27906 9020 15608 19193 7689 16780 1306 25504 29236 5873 2683 20752 1638 17684 16172 30698 15441 14378 27298 7582 12336 5588 27914 28279 14009 4932 19676
看到了吗?这些数字都没有超过 35000。我做错了什么?
【问题讨论】:
我机器上的输出看起来不错(例如 74537、9993、54396 出现在那里)。 2^15 是“大约 35000”。看起来您正在使用带符号的 16 位整数。 那么我该如何改变呢?对于 32 位整数的 ex?qrand()
函数返回一个介于 0 和 RAND_MAX 之间的值(在 问题
实际上是 32767。这种情况下的行为与标准 rand()
相同:
返回一个介于 0 和
RAND_MAX
之间的伪随机整数。
以及qrand()
文档中的类似声明:
返回一个介于 0 和
RAND_MAX
之间的值(在<cstdlib>
和<stdlib.h>
中定义)。
显然,在您的情况下,RAND_MAX
等于 32767 (2¹⁵ – 1)。
解决方案
解决方案是使用 C++11 随机数生成器:
#include <random>
// ...
std::random_device rd;
std::mt19937 mt(rd());
const int min = 0;
const int max = 99999;
std::uniform_int_distribution<int> ds(min, max);
for (int i = 0; i < 1000; ++i)
qDebug() << ds(mt);
【讨论】:
是的,我同意你的看法。那是个问题。从 c++11 应用这些新的随机函数后,一切正常。谢谢!以上是关于qt无法正常输出中文怎么办的主要内容,如果未能解决你的问题,请参考以下文章
在qt里面用release编译运行正常,能连接到数据库,但是无法使用数据库查询了,这是怎么回事喃?