2014-11-09 20 views
2

Есть ли способ распечатать данные QstandardItem, скажем, у меня;Как «распечатать» данные QStandardItem

QList<QStandardItem*> testQList; 
QString yay = "!Yay"; 
QStandardItem *item = new QStandardItem(yay); 
testQList.append(item); 

qDebug() << testQList; 

Я просто получить памяти Адресная, (0x409bd00) я не могу разыменования списка либо.

+0

Привет Нил, вот первое, что я пытался, я получаю 'незаконное indirection' и' << незаконным class' – user4217633

ответ

3

Вы получаете это, потому что пытаетесь распечатать весь список с объектами, это не список со строками. В этом случае qDebug всегда печатает адрес памяти, поэтому вы должны использовать метод loop и text() (список итерационных бросков).

for(int i = 0; i<testQList.size();i++) 
{ 
    qDebug() << testQList.at(i)->text(); 
} 
1
#include <QCoreApplication> 
#include <QString> 
#include <QList> 
#include <QDebug> 

class QStandardItem 
{ 
    QString mStr; 
public: 
    QStandardItem(QString str) 
    { 
     mStr = str; 
    } 

    QString toString() 
    { 
     return mStr; 
    } 
}; 

int main(int argc, char *argv[]) 
{ 
    QCoreApplication a(argc, argv); 

    QList<QStandardItem*> testQList; 
    QString yay = "!Yay"; 
    QStandardItem *item = new QStandardItem(yay); 
    testQList.append(item); 

    for(int i = 0; i<testQList.size();i++) 
    { 
     qDebug() << testQList.at(i)->toString(); 
    } 

    return a.exec(); 
} 
Смежные вопросы