crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

miksayer
  опции профиля:
сообщение 29.11.2009, 13:49
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 33
Регистрация: 18.1.2009
Пользователь №: 495

Спасибо сказали: 0 раз(а)




Репутация:   0  


Задача стоит такая: написать модель для QTreeView, которая представляла бы собой дерево из "мнимых" путей к файлам, т.е. этих файлов на самом деле нет на диске(поэтому QDirModel не катит), т.е. я добавляю туда несолько путей типа "/dir1/dir2/file", а модель строит мне из них дерево. Плюс ко всему должно быть три столбца, в первом должно быть имя папки\файла, а во втором и третьем чекбокс и комбобокс соответственно(причем их значения можно менять и у папок, и у файлов). Я начал разбираться с документацией и стандартным примером и сразу возникли вопросы:
1. Класс элемента там описан так:
class TreeItem
{
public:
    TreeItem(const QList<QVariant> &data, TreeItem *parent = 0);
    ~TreeItem();

    void appendChild(TreeItem *child);

    TreeItem *child(int row);
    int childCount() const;
    int columnCount() const;
    QVariant data(int column) const;
    int row() const;
    TreeItem *parent();

private:
    QList<TreeItem*> childItems;
    QList<QVariant> itemData;
    TreeItem *parentItem;
};

Могу ли я вместо QList<QVariant> itemData; написать что-то вроде такого:
class TreeItem
{
public:
struct ItemData
{
    QString path;
    bool needDownload;
    int priority;
}
//...............
private:
//.................
ItemData itemData;
}

? т.е. можно использовать вместо списка структуру и работать с ней(что имхо более логично)?
2. Как мне правильно описать setData, который мне необходимо описать(судя по документации)?
3. Правильно ли реализован метод flags для моего случая:
Qt::ItemFlags FilesTreeModel::flags(const QModelIndex &index) const
{
    if (!index.isValid())
        return 0;

    return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable;
}

?
4. Как добавлять виджеты(в моем случае чекбоксы и комбобоксы) в столбцы?

Сообщение отредактировал miksayer - 29.11.2009, 14:00
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 28.6.2025, 22:47