[gelöst] Schwierigkeiten mit QList
Verfasst: 31. Mai 2009 00:03
Hallo zusammen!
Ich möchte ein Programm schreiben mit dem man PDF-Dateien, die in einem Verzeichnis liegen, "durchklicken" kann (Quellcode unten). "Durchklicken" heißt, dass bestimmte Informationen zu der Datei angezeigt werden (zum Testen erstmal nur der Pfad).
Doch leider kommt es beim Compilieren zu den folgenden Fehlern:
In der Fehlermeldung sind glaube ich diese beiden entscheiden:
Hier ist der aktuelle Quellcode:
papermanager.h
papermanager.cpp
paper.h
paper.cpp
Ich würde mich sehr über eure Hilfe freuen!
Beste Grüße,
der Luftballon
Ich möchte ein Programm schreiben mit dem man PDF-Dateien, die in einem Verzeichnis liegen, "durchklicken" kann (Quellcode unten). "Durchklicken" heißt, dass bestimmte Informationen zu der Datei angezeigt werden (zum Testen erstmal nur der Pfad).
Doch leider kommt es beim Compilieren zu den folgenden Fehlern:
Code: Alles auswählen
papermanager.cpp: In constructor 'PaperManager::PaperManager()':
papermanager.cpp:23: error: no matching function for call to 'QGridLayout::addWidget(Paper&, int, int, int, int)'
/usr/include/qt4/QtGui/qgridlayout.h:112: note: candidates are: void QGridLayout::addWidget(QWidget*)
/usr/include/qt4/QtGui/qgridlayout.h:113: note: void QGridLayout::addWidget(QWidget*, int, int, Qt::Alignment)
/usr/include/qt4/QtGui/qgridlayout.h:114: note: void QGridLayout::addWidget(QWidget*, int, int, int, int, Qt::Alignment)
papermanager.cpp: In member function 'void PaperManager::readDirectory()':
papermanager.cpp:40: error: no matching function for call to 'QList<Paper>::append(Paper*)'
/usr/include/qt4/QtCore/qlist.h:414: note: candidates are: void QList<T>::append(const T&) [with T = Paper]
/usr/include/qt4/QtGui/qwidget.h: In copy constructor 'Paper::Paper(const Paper&)':
paper.h:8: instantiated from 'void QList<T>::node_copy(QList<T>::Node*, QList<T>::Node*, QList<T>::Node*) [with T = Paper]'
/usr/include/qt4/QtCore/qlist.h:517: instantiated from 'void QList<T>::detach_helper() [with T = Paper]'
/usr/include/qt4/QtCore/qlist.h:115: instantiated from 'void QList<T>::detach() [with T = Paper]'
/usr/include/qt4/QtCore/qlist.h:396: instantiated from 'T& QList<T>::operator[](int) [with T = Paper]'
papermanager.cpp:23: instantiated from here
/usr/include/qt4/QtGui/qwidget.h:746: error: 'QWidget::QWidget(const QWidget&)' is private
paper.h:8: error: within this context
/usr/include/qt4/QtCore/qlist.h: In member function 'void QList<T>::node_copy(QList<T>::Node*, QList<T>::Node*, QList<T>::Node*) [with T = Paper]':
/usr/include/qt4/QtCore/qlist.h:349: note: synthesized method 'Paper::Paper(const Paper&)' first required here
Code: Alles auswählen
papermanager.cpp:23: error: no matching function for call to 'QGridLayout::addWidget(Paper&, int, int, int, int)'
papermanager.cpp:40: error: no matching function for call to 'QList<Paper>::append(Paper*)'
papermanager.h
Code: Alles auswählen
#ifndef PAPERMANAGER_H
#define PAPERMANAGER_H
#include <QtGui>
#include <QtCore>
#include "paper.h"
class PaperManager : public QMainWindow
{
Q_OBJECT
public:
PaperManager();
private:
QWidget *widget;
QPushButton *button0, *button1;
QGridLayout *layout;
int n;
int i;
QList<Paper> papers;
void readDirectory();
};
#endifCode: Alles auswählen
#include "papermanager.h"
#include <QtGui>
#include <QtCore>
PaperManager::PaperManager()
{
// Daten einlesen
readDirectory();
// Menü
QMenu *fileMenu = new QMenu(tr("&File"), this);
menuBar()->addMenu(fileMenu);
fileMenu->addAction(tr("E&xit"), qApp, SLOT(quit()));
// Zentrum
button0 = new QPushButton("next...");
button1 = new QPushButton("previous...");
widget = new QWidget;
layout = new QGridLayout;
layout->addWidget(button0, 0, 0);
layout->addWidget(button1, 0, 1);
layout->addWidget(papers[0], 1, 0, 1, 2);
widget->setLayout(layout);
resize(640,480);
setCentralWidget(widget);
}
void PaperManager::readDirectory()
{
QDir dir("/media/data/paper");
dir.setFilter(QDir::Files);
QList<QFileInfo> files = dir.entryInfoList();
n = files.size();
for(i = 0; i < n; i++)
{
papers.append( new Paper(files[i]) );
}
}Code: Alles auswählen
#ifndef PAPER_H
#define PAPER_H
#include <QtGui>
#include <QtCore>
class Paper : public QWidget
{
Q_OBJECT
public:
Paper(QFileInfo fi);
private:
QFileInfo fi;
};
#endifCode: Alles auswählen
#include "paper.h"
Paper::Paper(QFileInfo fi) : fi(fi)
{
QLabel *label = new QLabel(fi.absoluteFilePath());
QGridLayout *layout = new QGridLayout;
layout->addWidget(label);
setLayout(layout);
show();
}Beste Grüße,
der Luftballon