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
#include <QtGui>
#include "mainwindow.h"
MainWindow::MainWindow() {
// create system models ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
treeModel = new QFileSystemModel(this);
treeModel
->setFilter
(QDir::NoDotAndDotDot |
QDir::AllDirs);
treeModel->setRootPath("/");
// tree ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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();
}
#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();
}
To copy to clipboard, switch view to plain text mode
(I do need the dock)
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QtCore>
#include <QtGui>
{
Q_OBJECT
public:
MainWindow();
private:
QFileSystemModel *treeModel;
};
#endif // MAINWINDOW_H
#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
To copy to clipboard, switch view to plain text mode
main.cpp
#include <QtGui/QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
MainWindow w;
w.show();
return a.exec();
}
#include <QtGui/QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
To copy to clipboard, switch view to plain text mode
=> My QTCreator project file: download here
*
=> I forgot to mention the problem (maybe I wasn't clear), 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!
Bookmarks