Hello,
I have a problem making QTreeView work as expected.
I'm trying to make a simple filesystem tree using QFileSystemModel. I made this to work, but when I start my application, in the first 0.5 - 1 seconds of running the program the tree appears un-ordered (beginning with the home folder) and without a scrollbar. Example pictures are as follows:
This is as it appears on the cold startup for the first 0.5 - 1 seconds:
This is as it appears after the previous image, that is, after 0.5 - 1 seconds:
My code is as follows:
mainwindow.cpp
(I do need the dock)Code:#include <QtGui> #include "mainwindow.h" MainWindow::MainWindow() { QString startPath = QDir::currentPath(); // create system models ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ treeModel = new QFileSystemModel(this); treeModel->setFilter(QDir::NoDotAndDotDot | QDir::AllDirs); treeModel->setRootPath("/"); // tree ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ treeDock = new QDockWidget("Tree view", this); treeView = new QTreeView(treeDock); QWidget* dummyWidget = new QWidget(); //remove dock titlebar treeDock->setTitleBarWidget(dummyWidget); treeView->setModel(treeModel); treeView->setHeaderHidden(true); //no headers treeView->setUniformRowHeights(false); //better performance treeView->hideColumn(1); treeView->hideColumn(2); treeView->hideColumn(3); treeView->hideColumn(4); treeView->setRootIndex(treeModel->index("/")); treeView->setCurrentIndex(treeModel->index(startPath)); treeView->scrollTo(treeModel->index(startPath)); treeDock->setWidget(treeView); //add tree to dock this->addDockWidget(Qt::LeftDockWidgetArea, treeDock); // statusbar ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ status = statusBar(); }
mainwindow.h
main.cppCode:#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QtCore> #include <QtGui> class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(); private: QFileSystemModel *treeModel; QTreeView *treeView; QDockWidget *treeDock; QStatusBar *status; QMenuBar *menuBar; }; #endif // MAINWINDOW_H
=> My QTCreator project file: download hereCode:#include <QtGui/QApplication> #include "mainwindow.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }
*
The problem is, I'm trying to eliminate that interval when the tree is un-ordered and without a scrollbar. I want it to appear like in the second picture from the start.
I was going nuts trying to solve this but no luck...
Any help would be greatly appreciated!



Reply With Quote

