Russian Qt Forum

Qt => Model-View (MV) => Тема начата: igorko от Май 03, 2006, 14:31



Название: Узнать из Model о View (4.1)
Отправлено: igorko от Май 03, 2006, 14:31
Я создал свою MyModel : public QAbstractTableModel
и установил ее на QTableView

Подскажите, плз, можно ли из MyModel узнать что-нибудь о QTableView на который она установлена?

Например как получить размеры QTableView из MyModel?

В доках ничего не нахожу.

Спасибо!!!


Название: Узнать из Model о View (4.1)
Отправлено: Sergeich от Май 03, 2006, 14:41
А на хрена!? Идея MVC как раз и состоит в том, что модель ничего не должна знать о виде.


Название: Узнать из Model о View (4.1)
Отправлено: igorko от Май 03, 2006, 17:11
Да Serg,
Чего-то я об этом не подумал.

Моя задача такова: мой Delegate:public QItemDelegate создает свои editor-ы для полей таблицы в зависимости от типа поля.
Когда я создаю QTextEdit, то хотелось бы чтобы его размер можно было вычислить в зависимости от размера QTableView.
А как его "достать" из модели либо делегата - не знаю :(

Буду благодарен за любые комментарии.


Название: Узнать из Model о View (4.1)
Отправлено: Sergeich от Май 03, 2006, 18:01
Как я понял ты юзаешь QWidget * createEditor ( QWidget * parent, ... ) для создания QTextEdit. В данном случае parent - указатель на QTableView.


Название: Узнать из Model о View (4.1)
Отправлено: nEoN от Май 04, 2006, 08:34
Цитата: "igorko"
Когда я создаю QTextEdit, то хотелось бы чтобы его размер можно было вычислить в зависимости от размера QTableView.
А как его "достать" из модели либо делегата - не знаю :(

Вообщето View сама подгоняет размер созданного editor'a под размеры ячейки.
Если тебе нужен какой то особенный размер, то правильней будет у делегата переопределить виртуальный метод
Код:
updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex & index) const;
где editor - окно редактора ячейки, editor->parent() - должен быть View.


Название: Узнать из Model о View (4.1)
Отправлено: igorko от Май 04, 2006, 09:45
Cпасибо nEoN и Sergeich

Я именно в updateEditorGeometry все и делал.

(QWidget*)editor->parent()->size()

это именно то что мне нужно: теперь мой QTextEdit "вписывается" во View и изменяется с изменением размеров родителя :)

Спасибо что просветили.