2016-02-12 120 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的細節,這是很常見的調試技術)

相關問題