crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> setHeaderData возвращает FALSE..
kibsoft
  опции профиля:
сообщение 14.3.2010, 17:59
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 180
Регистрация: 21.7.2009
Из: Самара
Пользователь №: 928

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




Репутация:   2  


Есть QTableView, своя модель, свой делегат, но не могу задать заголовок таблицы..Может надо переопределять этот метод? Если да, то как?
И вообще есть вопрос общий, как можно понять что писать в виртуальном методе, вот например setHeaderData? В доке написано, что реализация обязательно должна содержать сигнал об изменении хедеров, но что кроме этого там должно быть?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 14.3.2010, 18:19
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(kibsoft @ 14.3.2010, 20:59) *
но не могу задать заголовок таблицы
у таблицы нет заголовка
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kibsoft
  опции профиля:
сообщение 14.3.2010, 19:43
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 180
Регистрация: 21.7.2009
Из: Самара
Пользователь №: 928

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




Репутация:   2  


Цитата(Litkevich Yuriy @ 14.3.2010, 19:19) *
Цитата(kibsoft @ 14.3.2010, 20:59) *
но не могу задать заголовок таблицы
у таблицы нет заголовка

Ммм..а что же такое вверху во вьювере 1,2,3 заголовки?

headerData() For horizontal headers, the section number corresponds to the column number. там хранится QVariant с номерами столбцов, которые соответственно отображаются в QTableView.. Если я что-то не так думаю, то объясните пожалуйста.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 14.3.2010, 19:49
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


возможно речь о заголовках столбцов?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kibsoft
  опции профиля:
сообщение 14.3.2010, 19:50
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 180
Регистрация: 21.7.2009
Из: Самара
Пользователь №: 928

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




Репутация:   2  


Цитата(Litkevich Yuriy @ 14.3.2010, 20:49) *
возможно речь о заголовках столбцов?

Да, извиняюсь за неточное пояснение :rolleyes:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 14.3.2010, 20:42
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Я так понимаю, что сейчас ты пытаешься в делегате поменять заголовок столбца. Не понятно зачем.

По этому расскажи, "что ты хочешь сделать?", а не "как ты это хочешь сделать?"
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kibsoft
  опции профиля:
сообщение 14.3.2010, 21:13
Сообщение #7


Участник
**

Группа: Участник
Сообщений: 180
Регистрация: 21.7.2009
Из: Самара
Пользователь №: 928

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




Репутация:   2  


Цитата(Litkevich Yuriy @ 14.3.2010, 21:42) *
Я так понимаю, что сейчас ты пытаешься в делегате поменять заголовок столбца. Не понятно зачем.

По этому расскажи, "что ты хочешь сделать?", а не "как ты это хочешь сделать?"

Нет, не в делегате. К tableview применяю мою модель, которая наследуется от QAbstractTableModel, в итоге в вьювере заголовки столбцов имеют свои порядковые номера, а я хочу чтобы в хедерах был определенный текст. Поэтому в конструкторе модели моей, я пытаюсь с помощью setHeaderData задать текст заголовка. Например так: setHeaderData(0,Qt::Horizontal,"Текст",Qt::DisplayRole).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
MoPDoBoPoT
  опции профиля:
сообщение 14.3.2010, 22:55
Сообщение #8


Участник
**

Группа: Участник
Сообщений: 172
Регистрация: 7.5.2009
Из: Москва
Пользователь №: 738

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




Репутация:   9  


Цитата(kibsoft @ 14.3.2010, 21:13) *
К tableview применяю мою модель, которая наследуется от QAbstractTableModel, в итоге в вьювере заголовки столбцов имеют свои порядковые номера, а я хочу чтобы в хедерах был определенный текст. Поэтому в конструкторе модели моей, я пытаюсь с помощью setHeaderData задать текст заголовка. Например так: setHeaderData(0,Qt::Horizontal,"Текст",Qt::DisplayRole).

QAbstractTableModel - абстрактный класс, то есть это просто интерфейс для работы с моделью (с этим интерфейсом работает представление и т.п.). Весь необходимый функционал надо реализовать самому, поэтому setHeaderData() ничего и не делает.
Если тебе реально нужно редактировать заголовок, то реализуй этот функционал (смотри, например, исходники QStandardItemModel). А если у твоей модели количество столбцов и их названия предопределены (жестко заданы), то можно обойтись простым переопределением headerData().

Сообщение отредактировал MoPDoBoPoT - 14.3.2010, 22:56
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kibsoft
  опции профиля:
сообщение 14.3.2010, 23:03
Сообщение #9


Участник
**

Группа: Участник
Сообщений: 180
Регистрация: 21.7.2009
Из: Самара
Пользователь №: 928

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




Репутация:   2  


MoPDoBoPoT, спасибо за подробное разъяснение! Да, данные жестко заданы, поэтому просто переопределю headerData().
И насчет абстрактных классов - там же есть реализация некоторых методов, это же не чистый интерфейс. А как узнать где есть реализация, а где нету? В доке видел пометки pure virtual, т.е. без реализации как я понимаю, правильно ли я думаю?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 15.3.2010, 14:30
Сообщение #10


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(kibsoft @ 15.3.2010, 2:03) *
видел пометки pure virtual, т.е. без реализации как я понимаю, правильно ли я думаю?
да, правильно

запись в коде, для истинно виртуального метода, содержит "= 0", например:
class MyClass
{
    MyClass();
    ~MyClass();
   virtual void myVirtualFunction();
   virtual void myPureVirtualFunction() = 0;
};
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 27.12.2024, 7:22