@Oleg_Mishutin

QFileSystemModel, QTreeView: как назначить SIGNAL на конкретный файл из дерева?

Добрый день. Пытаюсь построить простую локальную справочную систему на Qt: слева - отображение файловой системы, справа - отображение содержания файла.
Код в main.cpp:

QFileSystemModel *model = new QFileSystemModel();
    model->setRootPath(QDir::currentPath());
    QTreeView *tree = new QTreeView();
    tree->setModel(model);
    tree->setRootIndex(model->index(QCoreApplication::applicationDirPath() + "/pkb_db")); // в этом каталоге - другие папки и файлы - "база"
    layout1->addWidget(tree);
    QModelIndex index1 = model->index(QCoreApplication::applicationDirPath() + "/pkb_db/Roadmaps/Roadmaps.html"); // назначаю индекс для определенного файла

    QTextBrowser* center = new QTextBrowser;
    layout2->addWidget(center);
    center->setSource(QUrl("file:///" + QCoreApplication::applicationDirPath() + "/pkb_db/Roadmaps/Roadmaps.html"));
    center->hide();

    QObject::connect(tree, SIGNAL(clicked(const QModelIndex&)), center, SLOT(show()));


При таком коде содержимое файла Roadmaps.html отображается при клике по любому каталогу или файлу из дерева слева. А вот назначить клик-сигнал на нужный файл в дереве ну никак не получается. Как здесь правильно применить index в connect? Или я вообще не туда копаю?
Заранее спасибо.
  • Вопрос задан
  • 266 просмотров
Пригласить эксперта
Ответы на вопрос 1
IGHOR
@IGHOR Куратор тега Qt
Qt/C++ DEV/CTO
Чтобы узнать на чем кликнули вам надо слот с параметром const QModelIndex &model
И доставать елемент так QStandardItem *item = model->itemFromIndex(model->mapToSource(index));
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы