Политика конфиденциальностиКонтактыО сайтеОтзывыGitHubDonate
© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
28 сентября 2018 г. 13:40

Установить иконку в строке в TreeView в QML

Добрый день!


За отсутствием в QML нормального диалога открытия файла для Android написал его сам.

Только столкнулся с тем, что не могу установить иконку в строке в TreeView в зависимости от того отображается в строке файл или папка.

Использую TreeView с моделью FolderListModel.

Сейчас это имеет такой вид:

А должна вместо иконки папки в последней строке отображаться иконка файла (ptc_licFile.dat - файл).

Код:

TreeView {
     id: treeView
     anchors.fill: parent
     clip: true
     headerVisible: false
     model: FolderListModel {
          id: fileSystemModel
     }
     TableViewColumn {
          width: 38
          delegate: Image {
               fillMode: Image.PreserveAspectFit
               source: if (fileSystemModel.isFolder(treeView.currentIndex)) { // Определить это папка или файл
                          return "qrc:/pict/folder.png"
                       }
                       else {
                          return "qrc:/pict/file.png"
                       }
                }
     }
     TableViewColumn {
          role: "fileName"
     }
}

Как возможно это реализовать?

Если писать if (fileSystemModel.isFolder(treeView.currentIndex)) - не работает как нужно.

treeView.currentIndex - всегда 0, а нужно получить именно индекс текущей записи.

6
  • 29 сентября 2018 г. 15:18

Еще столкнулся с такой проблемой в модели для TreeView пишу:

import QtQuick 2.0
import QtQuick.Controls 2.4
import QtQml.Models 2.3
import Qt.labs.folderlistmodel 2.2
import QtQuick.Dialogs 1.2

...............

model: FolderListModel {
   id: fileSystemModel
   showDirsFirst: true
   sortField: FolderListModel.Name
   nameFilters: [ "*.*" ]
   folder: shortcuts.home  // Home
}


В ответ при компиляции получаю:

ReferenceError: shortcuts is not defined


Я что-то забыл добавить? В документации на диалоги написано только добавить import QtQuick.Dialogs 1.2 ( FileDialog ).

shortcuts не работает и в самом FileDialog.


0

Добрый день!

По моему, currentIndex показывает текущий выбранный элемент, хотя могу и ошибаться.

Попробуйте получить индекс через styleData, это более гарантированно возвращает правильный индекс.

fileSystemModel.isFolder(styleData.index)

Что касается shortcuts , то тут думаю, что лучше будет использовать StandardPaths из QML, просто в вашем случае возможно какие-то проблемы из-за самого модуля QtQuick.Controls 2.




0
  • 30 сентября 2018 г. 12:32

Спасибо! Все работает.

0
  • 1 октября 2018 г. 12:12

Попробовал в диалоге писать:

TableViewColumn {
            width: 38
            delegate: Image {
                id: img
                fillMode: Image.PreserveAspectFit
                source: if (fileSystemModel.isFolder(styleData.index)) {
                            return "qrc:/pict/folder.png"
                        }
                        else {
                            return "qrc:/pict/file.png"
                        }
            }
        }

По console.log() индексы выводит правильные, только isFolder выдает не верный результат.

Может есть другой способ, кроме isFolder?

0

ммм... я сейчас посмотрел описание метода isFolder и там оказывается принимается значение int в качестве индекса, возможно он ожидает номер строки, а currentIndex возвращал QModelIndex, также как и styleData.index

Попробуйте передать туда номер строки, то есть так

fileSystemModel.isFolder(styleData.row)

или так

fileSystemModel.isFolder(treeView.currentIndex.row)

0
  • 1 октября 2018 г. 12:33

Спасибо!

Корректно отрабатывает вариант

fileSystemModel.isFolder(styleData.row)

Если использовать

fileSystemModel.isFolder(treeView.currentIndex.row)
во всех строках каждый раз меняется иконка при переходе по строкам в treeView.


0

Ответы

Только авторизованные пользователи могут отвечать на форуме.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
ДД
13 декабря 2018 г. 16:24
Дмитрий Дубовик

C++ - Тест 005. Структуры и Классы

  • Результат:66баллов,
  • Очки рейтинга-1
13 декабря 2018 г. 16:04
Metelev

Qt - Тест 001. Сигналы и слоты

  • Результат:47баллов,
  • Очки рейтинга-6
YC
12 декабря 2018 г. 18:49
Yaroslav Chernetskyi

Qt - Тест 001. Сигналы и слоты

  • Результат:31баллов,
  • Очки рейтинга-10
Последние комментарии
V
15 декабря 2018 г. 2:06
Vlad15007

Спасибо большое!Очень помогли!
11 декабря 2018 г. 21:01
Евгений Легоцкой

Не знаю, какой-там конкретно эффект и если честно не хочется fl studio ради того, чтобы посмотреть устанавливать, но из того, что увидел в интернете. Предполагаю, что то, что вы хотите с...
V
11 декабря 2018 г. 19:25
Vlad15007

Подскажите пожалуйста ( я новичок совсем)Можно ли организовать спрайт без этого окошка (как в fl studio fruity dance)?
11 декабря 2018 г. 15:06
Евгений Легоцкой

Что интересно, если написать так from <application_name>.<module_name> import <filename> ,то PyCharm сносит крышу, если разрабатываешь в рамках проекта приложение, ко...
11 декабря 2018 г. 14:52
Илья Чичак

Тут мне тоже есть что сказать=) Сами разрабы советуют импортировать следующим образом: from <application_name> import <module_name> Стоит избегать from . import &l...;
Сейчас обсуждают на форуме
ИМ
18 декабря 2018 г. 15:29
Игорь Максимов

Доброго времени суток. Имеется модель для видео-контента (Movie), а конкретно привязана сейчас к одной модели(Compilation). Появилась необходимость добавить еще одну модель (Category) и связа...
R
18 декабря 2018 г. 12:25
RED_Spider

именно так, проблема в кодировке, а именно в отсутствии шрифтов на сервере, для меня вопрос решился в CentOS 7yum install curl cabextract xorg-x11-font-utils fontconfig всем спасибо за ...
U
18 декабря 2018 г. 10:39
Unreal_man

А вот этот коннект здесь и вовсе не нужен connect(ui->ok3, &QPushButton::clicked, this, &Widget::addToText); А как же без него? ============================== ...
m
17 декабря 2018 г. 19:03
melnik10

Спасибо, попробую!
R
16 декабря 2018 г. 14:41
RED_Spider

перевірено все працює http://doc.qt.io/qt-5/appicon.html Setting the Application Icon on Windows First, create an ICO format bitmap file that contains the icon image. This ca...
Присоединяйтесь к нам в социальных сетях

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы