Файл запуска 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

1

Решение

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

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();
}
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]