我正在尝试将QList作为参数发送到另一个类但由于某种原因我丢失了它的所有内容...... (当我用debuger打开物体时,我看到物体......)
尝试将QList书籍发送到课程Print:
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 :(得分: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()&lt;&lt; * K-&GT;在(ⅰ);串
答案 1 :(得分: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上使用指针。因为它们是自动隐式共享的。所以在这两个上使用指针是不好的设计。
答案 2 :(得分:0)
您应该按值传递QList。原因虽然表面看起来似乎很愚蠢,但是QList是隐式共享的。请阅读http://doc.trolltech.com/latest/implicit-sharing.html以了解有关该主题的更多信息。