QT中将gbk字符转换为utf-8字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT中将gbk字符转换为utf-8字符相关的知识,希望对你有一定的参考价值。

参考技术A 对于中文显示,由于QT默认采用UTF-8编码显示,若在控件中使用GBK类型的中文,则会显示乱码。

可以采用如下步骤:

如何在qt中将字符串转换为qwidget

【中文标题】如何在qt中将字符串转换为qwidget【英文标题】:how to convert string as qwidget in qt 【发布时间】:2017-02-08 11:42:48 【问题描述】:

。动态必须访问..任何其他方法都必须将字符串转换为 QWidget。

示例代码:

QWidget *widget1 = new QWidget();
QWidget *widget2 = new QWidget();

QPushButton *next = new QPushButton("next");
QPushButton *prev = new QPushButton("prev");

stack->addWidget(widget1);
stack->addWidget(widget2);

stack->setCurrentIndex(0);

QObject::connect(next, SIGNAL(clicked()), this, SLOT(NextBt()));

QObject::connect(prev, SIGNAL(clicked()), this, SLOT(PrevBt()));

void MainWindow::NextBt()


std::string str1 = "widget" + std::to_string(1);
QString str = str1.c_str();    // "widget1"

//How to implement QWidget object as conversion of String here.
//for dynamically i want to remove the already added widget.

stack->removeWidget(str);
str->deleteLater();
stack->setCurrentIndex(1);


【问题讨论】:

【参考方案1】:
QWidget *your_widget = parentWidget->findChild<QWidget *>("widget1");

if(your_widget != 0)

    //do whatever you want

见QObject::findChild():

返回此对象的子对象,该对象可以转换为类型 T 并且 被称为名称,如果没有这样的对象,则为 0。省略名称 参数使所有对象名称都匹配...

不要忘记为要查找的小部件设置父级。还需要为对象设置名称。例如

QWidget *widget1 = new QWidget(this);
widget1->setObjectName("widget1");

您可以使用QObject::findChildren() 检查某个小部件的所有子项

返回此对象的所有具有给定名称的子对象 转换为 T 类型,如果没有此类对象,则转换为空列表...

你也可以通过字符串来访问对象的方法,例如:

QMetaObject::invokeMethod(thread, "quit", // invoke the quit() method of QThread
                          Qt::QueuedConnection);

见QMetaObject::invokeMethod

【讨论】:

嗨弗拉基米尔,我得到了 parentWidget->findChild 的错误,如何检测字符串匹配这里已经创建了 widget1.. 好的,这是因为您没有为小部件设置 perent。这样做:QWidget *widget1 = new QWidget(this); 哦,谢谢弗拉基米尔,QMetaObject::invoke 方法用于方法调用作为我使用的字符串并且有效.. 但是我们可以使用字符串作为 QWidget.. 抱歉,我找不到解决这个?我在这里打了..你能帮我一些细节吗? @SenthilKumar ,好的,你需要添加widget1-&gt;setObjectName("widget1"); 感谢弗拉基米尔,对我来说非常有用的 cmets。

以上是关于QT中将gbk字符转换为utf-8字符的主要内容,如果未能解决你的问题,请参考以下文章

GBK与UTF-8编码错误转换后,无法再正确恢复

如何在qt中将字符串转换为qwidget

如何在 Linux 中将文件编码转换为 UTF-8

如何在 Python 中将字符串转换为 utf-8

如何在 Android 中将字符串转换为 UTF-8?

如何在 C# 中将字符串转换为 UTF-8?