2016-06-22 18 views
0

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(); 
} 

enter image description here

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.

+3

Dies könnte helfen: http: //doc.qt. io/qt-4.8/qt-itemviews-dirview-example.html –

+0

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. –

Antwort

0

test1.cppfile:

#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() 
{ 
    QString strdir=ui.lineEdit->text(); 
    QDir* rootDir = new QDir(strdir); 
    QFileInfoList filesList = rootDir->entryInfoList(); 
    /*QTreeWidgetItem* item = new QTreeWidgetItem();*/ 
ui.treeWidget->setColumnCount(1); 
QList<QTreeWidgetItem *> items; 
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"))); 
      /*treeItem->setCurrentItem(item);*/ 
     } 
     if(fileInfo.isDir()) 
     { 
      item->setIcon(0,*(new QIcon("folder.jpg"))); 
      viewer(item,fileInfo.filePath()); 
     } 
     item->setText(2,fileInfo.filePath()); 
     ui.treeWidget->addTopLevelItem(item); 
     /* ui.treeWidget->insertTopLevelItems(0, item);*/ 
    items.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("item: %1")))); 
ui.treeWidget->insertTopLevelItems(0, items); 
} 
} 
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); 
     ui.treeWidget->addTopLevelItem(item); 
    } 
} 
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); 
     ui.treeWidget->addTopLevelItem(item); 
     /*resizeColumnToContents(0);*/ 
    } 


} 

test1.h Datei:

#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 

main.cpp-Datei:

#include "test1.h" 
#include <QApplication> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    line w; 
    w.show(); 


    return a.exec(); 
}