![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
kibsoft |
![]()
Сообщение
#1
|
Участник ![]() ![]() Группа: Участник Сообщений: 180 Регистрация: 21.7.2009 Из: Самара Пользователь №: 928 Спасибо сказали: 14 раз(а) Репутация: ![]() ![]() ![]() |
Есть QTableView, своя модель, свой делегат, но не могу задать заголовок таблицы..Может надо переопределять этот метод? Если да, то как?
И вообще есть вопрос общий, как можно понять что писать в виртуальном методе, вот например setHeaderData? В доке написано, что реализация обязательно должна содержать сигнал об изменении хедеров, но что кроме этого там должно быть? |
|
|
Litkevich Yuriy |
![]()
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
kibsoft |
![]()
Сообщение
#3
|
Участник ![]() ![]() Группа: Участник Сообщений: 180 Регистрация: 21.7.2009 Из: Самара Пользователь №: 928 Спасибо сказали: 14 раз(а) Репутация: ![]() ![]() ![]() |
Ммм..а что же такое вверху во вьювере 1,2,3 заголовки? headerData() For horizontal headers, the section number corresponds to the column number. там хранится QVariant с номерами столбцов, которые соответственно отображаются в QTableView.. Если я что-то не так думаю, то объясните пожалуйста. |
|
|
Litkevich Yuriy |
![]()
Сообщение
#4
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
возможно речь о заголовках столбцов?
|
|
|
kibsoft |
![]()
Сообщение
#5
|
Участник ![]() ![]() Группа: Участник Сообщений: 180 Регистрация: 21.7.2009 Из: Самара Пользователь №: 928 Спасибо сказали: 14 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#6
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Я так понимаю, что сейчас ты пытаешься в делегате поменять заголовок столбца. Не понятно зачем.
По этому расскажи, "что ты хочешь сделать?", а не "как ты это хочешь сделать?" |
|
|
kibsoft |
![]()
Сообщение
#7
|
Участник ![]() ![]() Группа: Участник Сообщений: 180 Регистрация: 21.7.2009 Из: Самара Пользователь №: 928 Спасибо сказали: 14 раз(а) Репутация: ![]() ![]() ![]() |
Я так понимаю, что сейчас ты пытаешься в делегате поменять заголовок столбца. Не понятно зачем. По этому расскажи, "что ты хочешь сделать?", а не "как ты это хочешь сделать?" Нет, не в делегате. К tableview применяю мою модель, которая наследуется от QAbstractTableModel, в итоге в вьювере заголовки столбцов имеют свои порядковые номера, а я хочу чтобы в хедерах был определенный текст. Поэтому в конструкторе модели моей, я пытаюсь с помощью setHeaderData задать текст заголовка. Например так: setHeaderData(0,Qt::Horizontal,"Текст",Qt::DisplayRole). |
|
|
MoPDoBoPoT |
![]()
Сообщение
#8
|
Участник ![]() ![]() Группа: Участник Сообщений: 172 Регистрация: 7.5.2009 Из: Москва Пользователь №: 738 Спасибо сказали: 44 раз(а) Репутация: ![]() ![]() ![]() |
К tableview применяю мою модель, которая наследуется от QAbstractTableModel, в итоге в вьювере заголовки столбцов имеют свои порядковые номера, а я хочу чтобы в хедерах был определенный текст. Поэтому в конструкторе модели моей, я пытаюсь с помощью setHeaderData задать текст заголовка. Например так: setHeaderData(0,Qt::Horizontal,"Текст",Qt::DisplayRole). QAbstractTableModel - абстрактный класс, то есть это просто интерфейс для работы с моделью (с этим интерфейсом работает представление и т.п.). Весь необходимый функционал надо реализовать самому, поэтому setHeaderData() ничего и не делает. Если тебе реально нужно редактировать заголовок, то реализуй этот функционал (смотри, например, исходники QStandardItemModel). А если у твоей модели количество столбцов и их названия предопределены (жестко заданы), то можно обойтись простым переопределением headerData(). Сообщение отредактировал MoPDoBoPoT - 14.3.2010, 22:56 |
|
|
kibsoft |
![]()
Сообщение
#9
|
Участник ![]() ![]() Группа: Участник Сообщений: 180 Регистрация: 21.7.2009 Из: Самара Пользователь №: 928 Спасибо сказали: 14 раз(а) Репутация: ![]() ![]() ![]() |
MoPDoBoPoT, спасибо за подробное разъяснение! Да, данные жестко заданы, поэтому просто переопределю headerData().
И насчет абстрактных классов - там же есть реализация некоторых методов, это же не чистый интерфейс. А как узнать где есть реализация, а где нету? В доке видел пометки pure virtual, т.е. без реализации как я понимаю, правильно ли я думаю? |
|
|
Litkevich Yuriy |
![]()
Сообщение
#10
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
видел пометки pure virtual, т.е. без реализации как я понимаю, правильно ли я думаю? да, правильнозапись в коде, для истинно виртуального метода, содержит "= 0", например:
|
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 19.2.2025, 2:14 |