Ich habe mich einer längeren programmierfreien Zeit, an ein QT-Projekt rangewagt. Es soll ein Tool werden mit dem man Quellcode Dateien von
unnützen #include Direktiven säubern kann.
Da aller Anfang schwer ist, gibt es schon mit der Pröäsentation der Daten ein Problem:
Nach Betätigen eines Knopfes, soll ein QFileDialog erscheinen, mit dem man
ein Projektverzeichnis auswählt. Danach soll das Verzeichnis und die Daten in eine Baumansicht geladen werden, wobei es ungefähr die Struktur des
QtCreators nachahmen soll.
Die Gui wurde im Designer erstellt, die ui Datei ist auch als .h vorhanden.
Möchte ich nun einen simplen Text in die Baumansicht einfügen, geht dies ohne Probleme.
Nur das gewählte Verzeichnis und die SourceDateien werfen einen Compilerfehler aus der wie folge lautet:
error: no matching function for call to 'QTreeWidgetItem::setText(int, QStringList)'
Anbei die Code Dateien:
mainwindow.h
Code: Alles auswählen
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QDir>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
protected:
void changeEvent(QEvent *e);
private:
Ui::MainWindow *ui;
QDir directory;
private slots:
void changeDirectory();
void fillDirTree();
};
#endif // MAINWINDOW_H
Code: Alles auswählen
#include <QtGui/QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
#if defined(Q_WS_S60)
w.showMaximized();
#else
w.show();
#endif
return a.exec();
}
mainwindow.cpp
Code: Alles auswählen
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
#include <QTreeWidgetItem>
#include <QFileSystemModel>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->qButtonLoad,SIGNAL(clicked()), this, SLOT(changeDirectory()));
fillDirTree();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
void MainWindow::changeDirectory()
{
/* select a directory using file dialog */
QString path = QFileDialog::getExistingDirectory (this, tr("Projektordner"), directory.path());
if ( path.isNull() == false )
{
directory.setPath(path);
fillDirTree();
}
}
void MainWindow::fillDirTree()
{
QTreeWidgetItem *qtFileDir = new QTreeWidgetItem(ui->qTreeDir);
qtFileDir->setText( 0, directory.currentPath());
QTreeWidgetItem *qtFiles= new QTreeWidgetItem(qtFileDir);
// directory.entryList() ergibt den Fehler!
qtFiles->setText( 0,directory.entryList());
}
Mit einem Listwidget geht es auch. Nur das Treewidget stellt sich wuer.
Das Treewidget aus dem Designer hat den Name qTreeDir
Vielen Dank für mögliche Hilfestellungen
Schön mal wieder hier zu sein
Schönen Tag
Timo