菜单中需要显示中文,需要的参数必须是const char* ,而不是QString,所以需要将QString 转为const char*
尝试了多种方法,一直都是乱码,以下类似的组合我都尝试了,还是不行。请高手指点,最好能直接告诉我如何直接解决这个问题的方法和代码,不胜感激!
//QTextCodec::setCodecForTr(QTextCodec::codecForName("System"));//设置中文字体编码
//QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));//设置中文字体编码
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030"));//设置中文字体编码
//QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));//设置中文字体编码
//QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));//设置中文字体编码
//QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));//设置中文字体编码
QString str = "中文";
const char* ch= str.toAscii().constData();
//const char* ch= str.toStdString().c_str()
//const char* ch= str.toLatin1().data()
//const char* ch= QObject::tr("中文").toLocal8Bit().data();
surveymnu_ = new uiPopupMenu( &appl_,ch);
------解决方案--------------------
你把代码改成
QByteArray arr = str.toLocal8Bit();
const char* ch = arr.data();
分成两步走
开个小玩笑,步子迈大了,容易扯着蛋
------解决方案--------------------
咋这么乱呢,这一行就能解决问题:setWindowTitle(QString::fromLocal8Bit("中文"));
在代码里面直接使用中文不是好主意。
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
//先把文本框里的内容给QString类型的message,再把它给QString类型的temp,最后把temp转化为const char *类型的buf变量。
QString message = ui->textEdit->toPlainText();
QString temp = message.toLatin1();
const char buf = temp.data();