QTreeView appears un-ordered and without a scrollbar on startup
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 [B]un-ordered[/B] (beginning with the home folder) and [B]without a scrollbar[/B]. Example pictures are as follows:
This is as it appears on the cold startup for the first 0.5 - 1 seconds:
[IMG]http://andromeda.kiwilight.com/~dule/upload/example_unsorted.png[/IMG]
This is as it appears after the previous image, that is, after 0.5 - 1 seconds:
[IMG]http://andromeda.kiwilight.com/~dule/upload/example_sorted.png[/IMG]
My code is as follows:
mainwindow.cpp
[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();
}[/CODE]
(I do need the dock)
mainwindow.h
[CODE]#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
[/CODE]
main.cpp
[CODE]#include <QtGui/QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
[/CODE]
[B][COLOR="red"]=>[/COLOR][/B] [B]My QTCreator project file:[/B] [URL="http://andromeda.kiwilight.com/~dule/upload/cccc.tar.gz"]download here[/URL]
*
The problem is, I'm trying to [B]eliminate that interval when the tree is un-ordered and without a scrollbar[/B]. 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!
Re: QTreeView appears un-ordered and without a scrollbar on startup
Hi,
Personally I don't know how to really improve it, in the sense that the process that fills the model scanning the FS nodes needs some time and it's slow because maybe your home folder is rich of files and directories.
Naive solution would be making your home smaller.
It's anyway a bit weird you don't have scrollbars on the first picture, since items don't fit in the view...