Russian Qt Forum
Ноябрь 27, 2024, 05:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: QTreeView и иконки  (Прочитано 20484 раз)
spirit
Гость
« Ответ #15 : Сентябрь 29, 2008, 11:35 »

ну во-первых, модель нужно создавать через оператор new.
во-вторых, уже есть готовая QDirModel.
Записан
bezzil
Гость
« Ответ #16 : Сентябрь 29, 2008, 11:53 »

про дир модел знаю.
Я список файлов создаю для примера, хочу научится иконку вставлять.

Записан
spirit
Гость
« Ответ #17 : Сентябрь 29, 2008, 12:04 »

пример взят из асистанта и немного модифицирован
Код:
...
QTreeView *view = new QTreeView(this);
QStandardItemModel *model = new QStandardItemModel();
QStandardItem *parentItem = model->invisibleRootItem();
for (int i = 0; i < 4; ++i) {
QStandardItem *item = new QStandardItem(QString("item %0").arg(i));
item->setIcon(QIcon("addtab.png"));
parentItem->appendRow(item);
parentItem = item;
}
view->setModel(model);
...
Записан
bezzil
Гость
« Ответ #18 : Сентябрь 29, 2008, 12:32 »

иконки всё равно нету (
Записан
spirit
Гость
« Ответ #19 : Сентябрь 29, 2008, 12:34 »

выложи пример компилябильный.
Записан
bezzil
Гость
« Ответ #20 : Сентябрь 29, 2008, 12:43 »

Код:
Monitor::Monitor(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
QDir dir;
dir.cd("C:/");
QStringList FileList=dir.entryList();
QString CurrentDir=dir.rootPath();
int listsize=FileList.size();


QDockWidget *somedock = new QDockWidget;
QTreeView *view = new QTreeView;
QStandardItemModel *newitemmodel = new QStandardItemModel;
QStandardItem *parentItem = newitemmodel->invisibleRootItem();
for (int i = 0;i < listsize; ++i)
{
QIcon icon("C:\Install\icon.png");
  QStandardItem *item = new QStandardItem(FileList[i]);
item->setIcon(icon);
parentItem->appendRow(item);
}
view->setModel(newitemmodel);
view->setHeaderHidden(1);
somedock->setWidget(view);
addDockWidget(Qt::RightDockWidgetArea,somedock);

}

вот класс полностью, достаточно в мейне
Код:
Monitor w;
w.show();
, ну ты сам знаешь, в ВС 2005 с интегрированным КуТе компилится без проблем.
Записан
spirit
Гость
« Ответ #21 : Сентябрь 29, 2008, 12:47 »

путь неверный
Код:
QIcon icon("C:\Install\icon.png");
должно быть так
Код:
QIcon icon("C:\\Install\\icon.png");
а еще лучше для Qt так
Код:
QIcon icon("C:/Install/icon.png");
а еще лучше юзать ресурсы
Записан
bezzil
Гость
« Ответ #22 : Сентябрь 29, 2008, 12:50 »

спирит я тебя расцеловать готов. Спасиба громадное.
Записан
EhTemka
Гость
« Ответ #23 : Сентябрь 30, 2008, 10:54 »

Вообще у моделей, наследованых от QAbstractItemModel, есть функция
setData(const QModelIndex & index, const QVariant & value, int role = Qt::EditRole).

ТАк что иконки можно задавать с её помощью :

Код:
model->setData(model->index(i,j,parent), QIcon("C:/Install/icon.png"), Qt::DecorationRole)

А делегат уже сам разбереться, что ему рисовать...

Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.09 секунд. Запросов: 21.