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

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

Страниц: 1 2 [3]   Вниз
  Печать  
Автор Тема: Задача на тему Model/View  (Прочитано 26318 раз)
vregess
Гость
« Ответ #30 : Март 12, 2007, 20:30 »

В setData можно поставить
Код:

emit dataChanged(index,index);


Таким образом ты скажешь, что данные модели изменились, и это изменение должно немедленно отобразиться.

Кстати, по организации модели и хранения данный советую посмотреть исходники Qt Designer'a , а точнее его property editor'a. там все очень клево сделано, мне понравилось. И в принципе все понятно очень, хотя я не сразу врубился в некоторые методы, ну а потом все стало ясно. Идея хорошая, как и реализация.
Записан
evilguard
Гость
« Ответ #31 : Март 12, 2007, 22:08 »

Цитата: "vregess"
В setData можно поставить
Код:

emit dataChanged(index,index);


Таким образом ты скажешь, что данные модели изменились, и это изменение должно немедленно отобразиться.

Хм, не понадобилось вставлять это, без сигнала заработало.

добавлено спустя 16 минут:

 Кстати, все-таки непонятно, QModelIndex - это значит адрес ячейки модели. А как он выходит на реальный объект класса TreeItem, вот это мне непонятно. Как они связываются?

добавлено спустя 52 минуты:

 И еще, как убрать заголовок у QTreeView?
Записан
Lion
Гость
« Ответ #32 : Март 12, 2007, 22:43 »

Цитата: "evilguard"
А у тебя нет какого-нибудь примера древоаидной модели? Чтобы элементы были чекабильные. А то я пытаюсь разобраться в исходниках QTreeWidget, но понятно мало чего, нужен пример попроще.

Simple Tree Model Example в Assistant-е тебе в руки!
Записан
vregess
Гость
« Ответ #33 : Март 12, 2007, 22:51 »

Цитата: "evilguard"

 Кстати, все-таки непонятно, QModelIndex - это значит адрес ячейки модели. А как он выходит на реальный объект класса TreeItem, вот это мне непонятно. Как они связываются?


Цитировать

QModelIndex QAbstractItemModel::createIndex ( int row, int column, void * ptr = 0 ) const  [protected]

Creates a model index for the given row and column with the internal pointer ptr.
This function provides a consistent interface that model subclasses must use to create model indexes.

Когда ты создаешь индекс, ты указываешь последним аргументом как раз TreeItem, таким образом в возвращаемом объекте QModelIndex хранятся строка, колонка и указатель на TreeItem.
Непосредственно сам объект, на который указывает QModelIndex, можно получить используя метод internalPointer () этого класса.
Посмотри документацию на QModelIndex.
Еще раз повторю:
В твоей реализации модели для QTreeView есть метод index.
вот его описание:
Цитировать

QModelIndex QAbstractItemModel::index ( int row, int column, const QModelIndex & parent = QModelIndex() ) const  [pure virtual]

Returns the index of the item in the model specified by the given row, column and parent index.

Этот метод вызывается виджетом QTreeView (в твоем случае).
Когда Виджету необходимо получить информацию о каком либо итеме он передает методу index строку, колонку и родительский индекс интересующего итема. Параметры row и column - это положение интересующего итема внутри Родителя. на Родителя показывает parent.
Вот.
Цитата: "evilguard"

 И еще, как убрать заголовок у QTreeView?

В смысле?
Записан
evilguard
Гость
« Ответ #34 : Март 12, 2007, 23:17 »

Цитата: "vregess"

Цитата: "evilguard"

 И еще, как убрать заголовок у QTreeView?

В смысле?

В смысле шапку таблицы.
Записан
vregess
Гость
« Ответ #35 : Март 13, 2007, 07:33 »

Цитата: "evilguard"
Цитата: "vregess"

Цитата: "evilguard"

 И еще, как убрать заголовок у QTreeView?

В смысле?

В смысле шапку таблицы.


Код:

class BlaWidget: public QTreeView
{
...
};
...
BlaWidget *myWidget=new BlaWidget();
myWidget->header()->hide();


Цитировать

QHeaderView * QTreeView::header () const

Returns the header for the tree view.
Записан
evilguard
Гость
« Ответ #36 : Март 19, 2007, 18:50 »

Искал по всей справке, но так и не нашел, как обработать нажатие кнопки мыши на Q***View. Где почитать про это можно?
Записан
vregess
Гость
« Ответ #37 : Март 19, 2007, 21:57 »

Цитата: "evilguard"
Искал по всей справке, но так и не нашел, как обработать нажатие кнопки мыши на Q***View. Где почитать про это можно?


Смотри доки по:

void QWidget::customContextMenuRequested ( const QPoint & pos )

bool QAbstractScrollArea::event ( QEvent * e )

void QAbstractItemView::mouseDoubleClickEvent ( QMouseEvent * event )

void QAbstractItemView::mouseMoveEvent ( QMouseEvent * event )

void QAbstractItemView::mousePressEvent ( QMouseEvent * event )

void QAbstractItemView::mouseReleaseEvent ( QMouseEvent * event )
Записан
evilguard
Гость
« Ответ #38 : Март 20, 2007, 08:41 »

Еще вопросик: мне нужно, чтобы item'ы выделялись, причем самому определить способ их выделения, для QTreeView. По умолчанию он выделяет все подряд, а мне надо допустим, чтобы если я начал выделение через Ctrl или Shift, то должны добавляться к выделенным долько корневые элементы модели. А допустим, вложенных элементов нельзя выделить больше одной штуки(то есть выделяется только по клику мыши, но не клавишами Ctrl или Shift). Как отлавливать такое специфическое выделение.
Сейчас у меня стоит
objectsList->setSelectionMode(QAbstractItemView::ExtendedSelection);
Записан
Страниц: 1 2 [3]   Вверх
  Печать  
 
Перейти в:  


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