2010-07-05 84 views
1

我試圖發送的QList作爲參數傳遞給另一個類,但由於某種原因,我失去了所有它的內容... (當我打開與debuger我看到對象的對象...)如何將QList <Object *>對象發送給另一個類?

努力的QList書籍發送到類打印:

class Store: public QWidget { 
    Q_OBJECT 
public: 
    Analyze(QWidget *parent = 0); 
    void generate_report(); 
    ~Analyze(); 

private: 
    QList<Book *> books; 

}; 

class Print 
{ 
public: 
    Print(); 
    bool generate_report_file(QList<Book *> *); 
}; 

我送書是這樣的:

void Analyze::generate_report() 
{ 
. 
. 
. 

    Print p; 
    if (!p.generate_report_file(&books)) 
     QMessageBox::warning(this, "XML Escape","Error creating out.html", QMessageBox::Ok); 
} 
+0

顯示generate_report_file(的QList *)體 – zaynyatyi 2010-07-05 12:11:50

+0

布爾打印:: generate_report_file(的QList *書籍) { //針對每個預訂 對(INT I = 0;我尺寸();我++){ } – kaycee 2010-07-05 12:15:46

+0

這個想法是打印每本書的屬性... – kaycee 2010-07-05 12:16:36

回答

2

小例子

#include <QtCore/QCoreApplication> 
#include <QDebug> 
#include <QList> 
#include <QString> 

void print_list(QList<QString *> * k) 
{ 
    for (int i=0; i<k->size(); i++) 
    { 
     qDebug() << *k->at(i); 
    } 
} 

int main(int argc, char *argv[]) 
{ 
    QCoreApplication a(argc, argv); 
    QList<QString *> books; 
    books.append(new QString("asd")); 
    books.append(new QString("asdfgh")); 
    books.append(new QString("asdjhhhhhhtyut")); 
    print_list (&books); 

    return a.exec(); 
} 

所以只需在調用QList的元素時使用*函數,就像在 qDebug()< < * k-> at(i);字符串

0
#include <QtCore/QtCore> 

void 
printList(const QStringList& list) 
{ 
    foreach (const QString& str, list) { 
     qDebug() << str; 
    } 
} 

int main(int argc, char** argv) { 
    QCoreApplication app(argc, argv); 

    QStringList list; 
    list << "A" << "B" << "C"; 

    printList(list); 

    return QCoreApplication::exec(); 
} 

已經有一個名爲QStringList的類可以使用。另外,你會想通過引用來傳遞它。另外,你不想在容器或QString上使用指針。因爲它們會自動隱式共享。所以使用這兩個指針是不好的設計。

相關問題