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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с перегрузкой фукцыи QHeaderView::paintsection()  (Прочитано 8603 раз)
rokky05
Гость
« : Апрель 09, 2009, 14:15 »

Всем привет, у меня такая проблема:
Мне нужно перегрузить прорисовку Хдерных колонок в таблице, я унаследувался от класа QHeaderView и перегрузи функцию paintsection, дальше я просто скопипастил код из оригинальной функции в свою перегруженою, когда наяал компилировать компилятор выдал на ету строку Q_D(const QHeaderView); такую ошыбку:
"error: 'const QHeaderView::d_func() const' is private within this context "
Можете подсказать как ето выправить....
Записан
Rcus
Гость
« Ответ #1 : Апрель 09, 2009, 14:24 »

Нужно исправлять не эту ошибку, а ту что идет после слов "дальше я просто".
Записан
rokky05
Гость
« Ответ #2 : Апрель 09, 2009, 14:30 »

Нужно исправлять не эту ошибку, а ту что идет после слов "дальше я просто".

ну мне нужно лиш немного перерисвать хедер, тоесть немного передалать уже написаный код... поетому скопировал ево, почему не работает?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #3 : Апрель 09, 2009, 14:31 »

Посмотри на пример перегрузки в этом топике http://www.prog.org.ru/topic_9143_0.html
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #4 : Апрель 09, 2009, 14:55 »

Нужно исправлять не эту ошибку, а ту что идет после слов "дальше я просто".

ну мне нужно лиш немного перерисвать хедер, тоесть немного передалать уже написаный код... поетому скопировал ево, почему не работает?

Потому что в Qt практически везде используются d-указатели, и просто скопировать код из многих методов нельзя (т.к. d-указатели - private члены).
Записан
spirit
Гость
« Ответ #5 : Апрель 09, 2009, 14:59 »

можно покапаться в приватных классах и повытягивать все переменные, которые определены в приватном классе, либо же подрубить соответствующий привайный файл, но это зло.
Записан
rokky05
Гость
« Ответ #6 : Апрель 09, 2009, 15:14 »

можно покапаться в приватных классах и повытягивать все переменные, которые определены в приватном классе, либо же подрубить соответствующий привайный файл, но это зло.
Повытаскивать все пеменные... думаю ето не выход потому что тогда ета не будет работать коректно...
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #7 : Апрель 09, 2009, 16:41 »

Код
C++ (Qt)
#define private public

 Смеющийся
Записан
rokky05
Гость
« Ответ #8 : Апрель 09, 2009, 16:45 »

Код
C++ (Qt)
#define private public

 Смеющийся

и??? ето мне ничего не говорит....
Записан
spirit
Гость
« Ответ #9 : Апрель 09, 2009, 17:15 »

можно покапаться в приватных классах и повытягивать все переменные, которые определены в приватном классе, либо же подрубить соответствующий привайный файл, но это зло.
Повытаскивать все пеменные... думаю ето не выход потому что тогда ета не будет работать коректно...
как раз это оптимальное решение, т.к. твой виджет будет самодостаточен и будет работать с более поздними версиями кьюти.
а вот если ты собираешься юзать приватные кьютищные файлы, то такой гарании уже никто не дает.
из приватного ашника кьюти
Цитировать
//
//  W A R N I N G
//  -------------
//
// This file is not part of the Qt API.  It exists purely as an
// implementation detail.  This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//

PS. я делал свой хедер именно таким образом (перенося все переменные в свой класс) и все работает чудесно.
а когда юзал приватные ашники кьюти, то было много головной боли.
Записан
rokky05
Гость
« Ответ #10 : Апрель 09, 2009, 17:18 »

Я уже впринципе так и сделал.... но тут ищо одна задачка: как мне теперь подстпвить етот унаследований клас от QHeaderView моему QTbaleView?
Записан
spirit
Гость
« Ответ #11 : Апрель 09, 2009, 17:21 »

очень просто: см. QTableView::setVerticalHeader & QTableView::setHorizontalHeader.
Записан
rokky05
Гость
« Ответ #12 : Апрель 09, 2009, 17:29 »

очень просто: см. QTableView::setVerticalHeader & QTableView::setHorizontalHeader.


работает!!! сенкс Улыбающийся
Записан
Jo
Гость
« Ответ #13 : Ноябрь 25, 2009, 15:31 »

Не стал создавать новую тему, продолжу эту.

Столкнулся примерно с той же проблемой, только необходимо переопределить метод paintEvent в наследнике от QTableView. Родная реализация меня почти что всем устраивает, хочу лишь сделать так что бы вертикальные линии сетки не рисовались.

Неужели мне придется "копировать" практически все что есть в приватном классе этой вьюхи, только для того что бы убрать эти линии?

Да и вообще реально ли собрать свой класс как бы сказать гибрид QTableView и QTableViewPrivate.
Если да, то как это делается?

Просто из за такой конструкции в Qt вообще непонятно как частично менять методы унаследованного класса.
Помогите пожалуйста.

Записан
spectre71
Гость
« Ответ #14 : Ноябрь 25, 2009, 17:38 »

Не стал создавать новую тему, продолжу эту.

Столкнулся примерно с той же проблемой, только необходимо переопределить метод paintEvent в наследнике от QTableView. Родная реализация меня почти что всем устраивает, хочу лишь сделать так что бы вертикальные линии сетки не рисовались.

Неужели мне придется "копировать" практически все что есть в приватном классе этой вьюхи, только для того что бы убрать эти линии?

Да и вообще реально ли собрать свой класс как бы сказать гибрид QTableView и QTableViewPrivate.
Если да, то как это делается?

Просто из за такой конструкции в Qt вообще непонятно как частично менять методы унаследованного класса.
Помогите пожалуйста.


Отправь лучше заявку троллям.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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