explicit和QT中文字符乱码解决方法

来源:互联网 发布:中拍协网络拍卖公告 编辑:程序博客网 时间:2024/05/18 01:00

 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要和声明定义函数时的一致,否则它编译的时候可能不出问题,但是结果却总是不正确。