Ich habe ein UI mit QT-Designer erstellt.Durchsuchen von Verzeichnissen mit ui und QTreeWidget mit qt
In diesem UI benutze ich eine Taste für Browse-Verzeichnisse, und ein Lineedit für wählen Sie Pfad Text zu zeigen, und eine andere Pushbutton für ok, diese 3 Widgets und ein Treewidget werden auf einer Groupbox horizontal platziert.
Was ich möchte, ist wissen, ob ich dann OK-Taste blättern und klicken i die treeview auf diesen Pfad auf dem ui
meine test1.h Datei angezeigt werden soll enthält
#ifndef LINEEDIT_H
#define LINEEDIT_H
#include <QtGui>
#include "ui_line1.h"
#include <stdlib.h>
#include <iostream>
using namespace Ui;
class line : public QMainWindow
{
Q_OBJECT
public:
line(QWidget *parent = 0);
QTreeWidget(parent);
void viewer(QTreeWidgetItem* item,QString filePath);
private:
Ui::lineedit ui;
QDirModel *model;
public slots:
void browse();
void treeview();
void showDirectory(QTreeWidgetItem* item, int /*column*/);
};
#endif // LINEEDIT_H
mein test1 CPP-Datei enthält
#include "test1.h"
#include <QTreeWidget>
#include <QtGui>
#include <stdlib.h>
#include <iostream>
#include<QWidget>
#include<QTreeWidgetItem>
line::line(QWidget* parent)
{
ui.setupUi(this);
connect(ui.browse, SIGNAL(clicked()), this,SLOT(browse()));
connect(ui.ok, SIGNAL(clicked()), this,SLOT(treeview()));
connect(this , SIGNAL(itemClicked(QTreeWidgetItem*,int)),this,SLOT(showDirectory(QTreeWidgetItem*,int)));
}
void line::browse()
{
QString dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"),
"/home",QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
ui.lineEdit->setText(dir);
}
void line::treeview()
{
QWidget *centralWidget = new QWidget();
line *tree = new line (centralWidget);
tree->setFixedSize(395,395);
QTreeWidgetItem* headerItem = new QTreeWidgetItem();
headerItem->setText(0,QString("File Name"));
headerItem->setText(1,QString("Size (Bytes)"));
headerItem->setText(2,QString("Path"));
ui.treeWidget->setHeaderItem(headerItem);
ui.treeWidget->setColumnCount(2);
//ui.treeView->
//setHeaderItem(headerItem);
QString strdir=ui.lineEdit->text();
QDir* rootDir = new QDir(strdir);
QFileInfoList filesList = rootDir->entryInfoList();
foreach(QFileInfo fileInfo, filesList)
{
QTreeWidgetItem* item = new QTreeWidgetItem();
item->setText(0,fileInfo.fileName());
if(fileInfo.isFile())
{
item->setText(1,QString::number(fileInfo.size()));
item->setIcon(0,*(new QIcon("file.jpg")));
}
if(fileInfo.isDir())
{
item->setIcon(0,*(new QIcon("folder.jpg")));
viewer(item,fileInfo.filePath());
}
item->setText(2,fileInfo.filePath());
ui.treeWidget->addTopLevelItem(item);
}
QPalette* palette = new QPalette();
palette->setColor(QPalette::Base,Qt::red);
ui.treeWidget->setPalette(*(palette));
/*window->setCentralWidget(centralWidget);*/
/*ui.treeWidget->addTopLevelItem(centralWidget);*/
/*window->show();*/
return treeview();
}
void line::viewer(QTreeWidgetItem* item,QString filePath)
{
QDir* rootDir = new QDir(filePath);
QFileInfoList filesList = rootDir->entryInfoList();
foreach(QFileInfo fileInfo, filesList)
{
QTreeWidgetItem* child = new QTreeWidgetItem();
child->setText(0,fileInfo.fileName());
if(fileInfo.isFile())
{
child->setText(1,QString::number(fileInfo.size()));
}
if(fileInfo.isDir())
{
child->setIcon(0,*(new QIcon("folder.jpg")));
child->setText(2,fileInfo.filePath());
}
item->addChild(child);
}
}
void line::showDirectory(QTreeWidgetItem* item, int)
{
QDir* rootDir = new QDir(item->text(2));
QFileInfoList filesList = rootDir->entryInfoList();
foreach(QFileInfo fileInfo, filesList)
{
QTreeWidgetItem* child = new QTreeWidgetItem();
child->setText(0,fileInfo.fileName());
if(fileInfo.isFile())
{
child->setText(1,QString::number(fileInfo.size()));
child->setIcon(0,*(new QIcon("file.jpg")));
}
if(fileInfo.isDir())
{
child->setIcon(0,*(new QIcon("folder.jpg")));
child->setText(2,fileInfo.filePath());
}
item->addChild(child);
/*resizeColumnToContents(0);*/
}
}
main.cpp enthält
#include "test1.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
line w;
w.show();
return a.exec();
}
sind nicht ausgegeben bekommen, während auf den Debug-Punkten alles und jeden in Ordnung ist Überprüfung aber nicht die Ausgabe auf dem ui bekommen treewidget
Ist dies möglich, bitte helfen Sie mir, wo kann ich meine ändern Code.
Vielen Dank.
Dies könnte helfen: http: //doc.qt. io/qt-4.8/qt-itemviews-dirview-example.html –
Aber ich möchte interferieren, um den Pfad zu durchsuchen, von diesem Pfad möchte ich eine Treeview zeigen, bitte geben Sie mir ein simp Das Beispiel wie kann ich das bekommen. –