2016-02-12 3 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' вызывающему, нигде в нем вы, похоже, не упоминаете какую-либо функцию ввода-вывода. –

+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 к абоненту, то в зависимости от того, что вы пытаетесь достичь, вы можете:

  • печати его на консоль с помощью соиЬ < < ...

  • печати его Application Output панели в вашем Qt Creator с помощью QDebug() < < ...

    (см QDebug Class reference подробности, это довольно распространенный метод отладки)

Смежные вопросы