2013-11-25 5 views
1

Проблема в том, что я только недавно начал программирование на C++. Мой вопрос заключается в следующем:Qt 5 работает с файлом treeView и QFileSystemModel

Как сделать файл просмотренным в режиме mainwindow/treeview?

Документ для просмотра представляет собой текстовый документ со статическим путем. sPath - это путь к каталогу, в котором находятся файлы.

Ниже представлен мой файл «mainwindow.cpp».

#include "mainwindow.h" 
#include "ui_mainwindow.h" 
#include "QDirModel" 
#include "QTreeView" 
#include "QFileSystemModel" 
#include "QtGui" 
#include "QtCore" 
#include "QDir" 

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 

    QString sPath ="/home/simon/QT Projects/Bra_Programmering/utlatanden/"; 

    filemodel = new QFileSystemModel(this); 
    filemodel->setFilter(QDir::Files | QDir::NoDotAndDotDot); 
    filemodel->setNameFilterDisables(false); 
    filemodel->setRootPath(sPath); 
    ui->treeView->setModel(filemodel); 
    ui->treeView->setRootIndex(filemodel->setRootPath(sPath)); 
} 

MainWindow::~MainWindow() 
{ 
    delete ui; 
} 

void MainWindow::on_treeView_doubleClicked(const QModelIndex &index) 
{ 

}; 

Ниже представлен мой файл «mainwindow.h».

#ifndef MAINWINDOW_H 
#define MAINWINDOW_H 

#include <QMainWindow> 
#include <mainwindow.h> 
#include <QtCore> 
#include <QtGui> 
#include <QDirModel> 
#include <QFileSystemModel> 

namespace Ui { 
class MainWindow; 
} 

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 

public: 
    explicit MainWindow(QWidget *parent = 0); 
    ~MainWindow(); 

private slots: 

    void on_treeView_doubleClicked(const QModelIndex &index); 

private: 
    Ui::MainWindow *ui; 
    QFileSystemModel *filemodel; 
}; 

#endif // MAINWINDOW_H 

ответ

2

Если вы хотите, чтобы открыть файл с текстом по умолчанию просмотрщика:

void MainWindow::on_treeView_doubleClicked(const QModelIndex &index) 
{ 
    QDesktopServices::openUrl(QUrl::fromLocalFile(filemodel->filePath(index))); 
} 

Или, если вы хотите, чтобы открыть текстовый файл с помощью приложения Qt должно быть:

void MainWindow::on_treeView_doubleClicked(const QModelIndex &index) 
{ 
    QFile file(filemodel->filePath(index)); 

    if(file.open(QFile::ReadOnly | QFile::Text)) 
    { 
     QTextStream in(&file); 
     QString text = in.readAll(); 
     // Do something with the text 
     file.close(); 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^