![]() |
|
|
![]()
|
|
| olegkuzn |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 1.10.2007 Репутация: нет Всего: нет |
Здраствуйте. Помогите решить проблему :
Есть класс производный от QTreeView который выводит информацию примерно в виде : 1-+ |-1.1 |-1.2 |-1.3 2-+ |-2.1 |-2.2 |-2.3 Есть класс производный от QAbstractItemModel в котором реализованя функция InsertRow :
При отрабатывании ф-ции для первой группы элемент QTreeView изменяется таким образом : 1-+ |-1.1 |-Новый элемент |-1.2 |-1.3 2-+ |-2.1 |-2.2 |-2.3 При отрабатывании ф-ции для второй группы элемент QTreeView изменяется таким образом : 1-+ |-1.1 |-1.2 |-1.3 2-+ |-2.1 |-Новый элемент |-2.3 Если вторую группу свернуть и развернуть снова то элементы приобретают вид : 1-+ |-1.1 |-1.2 |-1.3 2-+ |-2.1 |-2.2 |-Новый элемент |-2.3 как сделать так чтобы вторая группа отрабатывала правильно. Заранее спасибо. |
|||
|
||||
| olegkuzn |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 1.10.2007 Репутация: нет Всего: нет |
Задача частично решена с помощью вызова сигнала : emit layoutChanged();
Спасибо всем кто читал данную тему. |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
insertRow() - не виртуальная функция, нужно переопределять insertRows()
|
|||
|
||||
| olegkuzn |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 1.10.2007 Репутация: нет Всего: нет |
Вопрос из чистого любопытства
Если переопределить insertRows тогда для чего используется метод insertRow? Если в методе insertRows каждый раз когда я добавляю новую строку нужно ли вызывать метод insertRow? |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
insertRow() вызывает insertRows() для вставки одной строки. insertRow() не является виртульной функцией, если ты её переопределяешь, ты скрываешь просто оригинальную функцию. В твоём коде будет вызываться твоя функция, а в QTreeView в методом setModel() ты передаешь указатель на базовый класс, QAbstractItemModel. Поэтому если QTreeView захочет вставить строку, он вызовет QAbstractItemModel::insertRow(), а не твою EditModel::insertRow().
А скорее всего, он вызовет сразу insertRows() - например, при drag-and-drop не будет разбираться сколько строк нужно вставить, одну или несколько. Это сообщение отредактировал(а) math64 - 16.11.2012, 08:55 |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |