我认为我的问题很容易解决,但由于我缺乏知识,我无法找到答案。
我有这个结构:
struct variableOutil {
std::string Nom;
float Valeur;
std::string Module;
std::string Unite;
std::string Format;
std::string Accesibilite;
std::string Description ;
};
问题来自这里:
struct variableOutil ToleranceTensionAvion;
ToleranceTensionAvion.Nom = "ToleranceTensionAvion";
QTableWidgetItem* newItem = new QTableWidgetItem();
newItem->setText(ToleranceTensionAvion.Nom);
this->ui->variableTableWidget->setItem(1,0,newItem);
我发现了这个错误:
No matching function for call to 'QTableWidgetItem::setText(std::string&)
问题是setText需要一个const QString &text
并告诉我我输入参数std::string&
,我不明白为什么这个类型不匹配,以及什么&毕竟,这是一个简单的字符串。
谢谢。
答案 0 :(得分:3)
您应该将std::string
转换为QString
:
newItem->setText(QString::fromStdString(ToleranceTensionAvion.Nom));
或者
newItem->setText(QString::fromUtf8(ToleranceTensionAvion.Nom.c_str());
答案 1 :(得分:2)
尝试:
newItem->setText(QString::fromUtf8(ToleranceTensionAvion.Nom.c_str());
QString
仅允许使用Unicode。
std::string
只存储字节,不适用于编码。存储文本的最佳方式可能是 UTF-8编码。
答案 2 :(得分:1)
它们是完全不同的类,std::string
不能用来代替QString
。您可以从QString
构建std::string
并传递它。
QString s =QString::fromStdString(ToleranceTensionAvion.Nom);
newItem->setText(s);
答案 3 :(得分:1)
只需在c._str()
上使用std::string
,它就可以用于任何需要QString