explicit和QT中文字符乱码解决方法
2011-11-20 23:21
387 查看
C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。声明为explicit的构造函数不能在隐式转换中使用。
(隐式转换:挺危险的一种转换方式,很多书上说隐式转换常常会会出现意想不到的BUG)。
C++中, 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色。 1 是个构造器; 2 是个默认且隐含的类型转换操作符。
QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030"));
setText(tr("开"));//不一定是setText函数,但是在字符前面要加一个tr。
有时候编译很难啊很难成功:pushButton_1->setText(tr("开")); 这个问题出在什么地方呢?
之后在学长的指点下才知道,pushButton_1是在ui对象下定义的。要写成ui->pushButton_1->setText(tr("开"));就OK
了啊。
还要主意一个OBJECTNAME的问题。连接的时候OBJECTNAME要和声明定义函数时的一致,否则它编译的时候可能不出问题,但是结果却总是不正确。
(隐式转换:挺危险的一种转换方式,很多书上说隐式转换常常会会出现意想不到的BUG)。
C++中, 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色。 1 是个构造器; 2 是个默认且隐含的类型转换操作符。
QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030"));
setText(tr("开"));//不一定是setText函数,但是在字符前面要加一个tr。
有时候编译很难啊很难成功:pushButton_1->setText(tr("开")); 这个问题出在什么地方呢?
之后在学长的指点下才知道,pushButton_1是在ui对象下定义的。要写成ui->pushButton_1->setText(tr("开"));就OK
了啊。
还要主意一个OBJECTNAME的问题。连接的时候OBJECTNAME要和声明定义函数时的一致,否则它编译的时候可能不出问题,但是结果却总是不正确。
相关文章推荐
- QT 5.9版本 使用MSVC2015编译时出现中文字符乱码问题的解决方法
- 读取txt的中文字符出现乱码的解决方法
- mysql插入表中的中文字符显示为乱码或问号的解决方法
- AJAX利用javascript向后台传递中文字符出现乱码解决方法。
- Qt中文乱码解决方法
- MySQL字符集中文乱码终极解决方案和mysql查询中文问题解决方法[转贴]
- Qt 中文乱码 解决方法
- 读取txt的中文字符出现乱码的解决方法
- SQLServer乱码问题的分析及解决方法(中文字符被存入数据库后,显示为乱码)
- MySQL字符集中文乱码终极解决方案和mysql查询中文问题解决方法[转贴]
- 数据库字符编码的设置以及数据库中文乱码的解决方法
- QT中一种中文乱码问题的解决方法
- Qt中解决中文乱码的方法----编码
- Qt 5.x中出现中文乱码的解决方法
- QT5中文显示乱码解决方法
- VC轻松解析XML文件--CMarkup使用方法(解决解析中文字符出现乱码问题)
- Qt中解决中文乱码的方法 (有改动)
- Qt 5 中解决中文乱码的方法
- MySQL字符集中文乱码终极解决方案和mysql查询中文问题解决方法[转贴]
- 命令行编译java源文件提示 “编码GBK的不可映射字符” 及输出的中文变为乱码的解决方法