Hello World Qt创建者

时间:2014-06-17 22:25:46

标签: c++ qt

我正在尝试制作一个显示我名字的简单对话框。看看代码。

Pessoa *p = new Pessoa("Ronald Araújo", "ronald.araujo@live.com", 23);

QMessageBox msg; msg.setText(QString::fromUtf8(p->getNome()));
msg.exec();

但是代码在setText()行中断,出现以下错误:

error: no matching function for call to 'QString::fromUtf8(std::string)'
msg.setText(QString::fromUtf8(p->getNome));

记住,当我举例msg.setText(QString::fromUtf8("Hi World"))时,代码正常运行。

返回名称的实现:

string Pessoa::getNome(){ return this->nome; }

2 个答案:

答案 0 :(得分:1)

QString无法直接从std::string构建。您有两种选择我可以立即想到:

要么改变

string Pessoa::getNome(){ return this->nome; }

QString Pessoa::getNome(){ return this->nome; }

或更改

 QMessageBox msg;
 msg.setText(QString::fromUtf8(p->getNome()));
 msg.exec();

QMessageBox msg;
msg.setText(QString::fromUtf8(QString::fromStdString(p->getNome())));
msg.exec();

答案 1 :(得分:0)

查看QString::fromUtf8()的文档:

QString QString::fromUtf8( const char * str, int size = -1 )

它不需要std::string作为其第一个参数。您可以使用QString::fromStdString()

QString QString::fromStdString( const std::string & str )

确实需要std::string,或更改您的代码以提供字符串的char array

msg.setText( QString::fromUtf8( p->getNome().c_str() ) );