http://kmlinux/~culik/wiki #include #include #include void showFile (QTreeWidgetItem * branch, QFileInfo info, int level); void MainWindow::showFile (QTreeWidgetItem * branch, QFileInfo info, int level) { QTreeWidgetItem * item = new QTreeWidgetItem; item->setText (0, info.fileName()); item->setToolTip (0, info.filePath()); if (info.isDir()) item->setTextColor (0, QColor (255, 128, 64)); else item->setTextColor (0, QColor ("cornflowerblue")); if (branch == NULL) ui->treeWidget->addTopLevelItem (item); else branch->addChild (item); if (info.isFile()) { QIcon * icon = new QIcon (info.filePath()); item->setIcon (0, *icon); } if (info.isDir() && level > 0) { QDir dir (info.filePath()); QFileInfoList list = dir.entryInfoList (QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot); for (int i = 0; i < list.count(); i++) showFile (item, list[i], level-1); } } void MainWindow::on_pushButton_clicked() { showFile (NULL, QFileInfo ("/usr/share/icons"), 4); }