2016-02-12 221 views
0

我遇到了一个问题,在通过函数执行操作时,我似乎无法获得要在控制台中显示的输出。运行函数时在控制台中没有输出显示

它通过Main()执行时有效,但通过该函数执行时只是空白。

下面是我的一些代码:

#include "ConferencePaper.h" 
#include "JournalArticle.h" 
#include "Reference.h" 
#include <QDebug> 
#include <QTextStream> 

QTextStream cout(stdout); 

int main() 
{ 
//QApplication app(argc, argv); 
QStringList list1; 
list1 << "This is a test"; 

Reference a("Marius",list1,1,"c"); //Instance of the Reference class created  with parameter values 
cout << "Title: " << a.getTitle(); //This works fine 
a.toString(); 

return 0; 

} 
//Reference Function 

#include <QString> 
#include <QStringList> 
#include <QTextStream> 
#include "Reference.h" 

Reference::Reference(QString ti, QStringList as, int ye, QString id): title(ti), authors(as), year(ye), refID(id){} 

QString Reference::toString() 
{ 
return QString("Title: %1\n") .arg(getTitle()); //Does not display anything 

} 
+0

你如何期待'toString'显示任何东西?它只是给调用者返回一个'QString',无处不在,你似乎提到任何IO函数。 –

+0

谢谢安德烈亚斯。金发碧眼的时刻:-) – mvanstad

回答

1

在你toString()方法:

QString Reference::toString() { 
    return QString("Title: %1\n") .arg(getTitle()); //Does not display anything 
} 

没有什么可能导致打印控制台上的任何东西。你只是返回作为该方法的结果字符串。

要显示某些内容,需要输出从该方法返回的字符串,例如在main()功能像

cout << a.toString().toUtf8().constData(); 

cout << a.toString().toLocal8Bit().constData(); 

请注意,您需要将您的QString转化为其中<<运营商可用于ostream的数据类型。另请参阅How to convert QString to std::string?

+1

它应该是'toLocal8Bit()'而不是'toUtf8()',以便在Windows和更旧的Linux上正常工作。 –

0

如上所述,X.toString();将只返回QString时,主叫方,则取决于你想要达到什么你可以:

  • 打印它使用COUT < <安慰......

  • 其打印应用程序输出窗格在使用qDebug()< < ...

    您的Qt Creator中(见QDebug Class reference的细节,这是很常见的调试技术)

相关问题