Russian Qt Forum
Февраля 26, 2025, 12:45
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Проблема с перегрузкой фукцыи QHeaderView::paintsection()
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Проблема с перегрузкой фукцыи QHeaderView::paintsection() (Прочитано 8843 раз)
rokky05
Гость
Проблема с перегрузкой фукцыи QHeaderView::paintsection()
«
:
Апреля 09, 2009, 14:15 »
Всем привет, у меня такая проблема:
Мне нужно перегрузить прорисовку Хдерных колонок в таблице, я унаследувался от класа QHeaderView и перегрузи функцию paintsection, дальше я просто скопипастил код из оригинальной функции в свою перегруженою, когда наяал компилировать компилятор выдал на ету строку Q_D(const QHeaderView); такую ошыбку:
"error: 'const QHeaderView::d_func() const' is private within this context "
Можете подсказать как ето выправить....
Записан
Rcus
Гость
Re: Проблема с перегрузкой фукцыи QHeaderView::paintsection()
«
Ответ #1 :
Апреля 09, 2009, 14:24 »
Нужно исправлять не эту ошибку, а ту что идет после слов "дальше я просто".
Записан
rokky05
Гость
Re: Проблема с перегрузкой фукцыи QHeaderView::paintsection()
«
Ответ #2 :
Апреля 09, 2009, 14:30 »
Цитата: Rcus от Апреля 09, 2009, 14:24
Нужно исправлять не эту ошибку, а ту что идет после слов "дальше я просто".
ну мне нужно лиш немного перерисвать хедер, тоесть немного передалать уже написаный код... поетому скопировал ево, почему не работает?
Записан
pastor
Administrator
Джедай : наставник для всех
Offline
Сообщений: 2901
Re: Проблема с перегрузкой фукцыи QHeaderView::paintsection()
«
Ответ #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
Сообщений: 2063
Re: Проблема с перегрузкой фукцыи QHeaderView::paintsection()
«
Ответ #4 :
Апреля 09, 2009, 14:55 »
Цитата: rokky05 от Апреля 09, 2009, 14:30
Цитата: Rcus от Апреля 09, 2009, 14:24
Нужно исправлять не эту ошибку, а ту что идет после слов "дальше я просто".
ну мне нужно лиш немного перерисвать хедер, тоесть немного передалать уже написаный код... поетому скопировал ево, почему не работает?
Потому что в Qt практически везде используются d-указатели, и просто скопировать код из многих методов нельзя (т.к. d-указатели - private члены).
Записан
spirit
Гость
Re: Проблема с перегрузкой фукцыи QHeaderView::paintsection()
«
Ответ #5 :
Апреля 09, 2009, 14:59 »
можно покапаться в приватных классах и повытягивать все переменные, которые определены в приватном классе, либо же подрубить соответствующий привайный файл, но это зло.
Записан
rokky05
Гость
Re: Проблема с перегрузкой фукцыи QHeaderView::paintsection()
«
Ответ #6 :
Апреля 09, 2009, 15:14 »
Цитата: spirit от Апреля 09, 2009, 14:59
можно покапаться в приватных классах и повытягивать все переменные, которые определены в приватном классе, либо же подрубить соответствующий привайный файл, но это зло.
Повытаскивать все пеменные... думаю ето не выход потому что тогда ета не будет работать коректно...
Записан
Alex Custov
Джедай : наставник для всех
Offline
Сообщений: 2063
Re: Проблема с перегрузкой фукцыи QHeaderView::paintsection()
«
Ответ #7 :
Апреля 09, 2009, 16:41 »
Код
C++ (Qt)
#define private public
Записан
rokky05
Гость
Re: Проблема с перегрузкой фукцыи QHeaderView::paintsection()
«
Ответ #8 :
Апреля 09, 2009, 16:45 »
Цитата: Alex Custov от Апреля 09, 2009, 16:41
Код
C++ (Qt)
#define private public
и??? ето мне ничего не говорит....
Записан
spirit
Гость
Re: Проблема с перегрузкой фукцыи QHeaderView::paintsection()
«
Ответ #9 :
Апреля 09, 2009, 17:15 »
Цитата: rokky05 от Апреля 09, 2009, 15:14
Цитата: spirit от Апреля 09, 2009, 14:59
можно покапаться в приватных классах и повытягивать все переменные, которые определены в приватном классе, либо же подрубить соответствующий привайный файл, но это зло.
Повытаскивать все пеменные... думаю ето не выход потому что тогда ета не будет работать коректно...
как раз это оптимальное решение, т.к. твой виджет будет самодостаточен и будет работать с более поздними версиями кьюти.
а вот если ты собираешься юзать приватные кьютищные файлы, то такой гарании уже никто не дает.
из приватного ашника кьюти
Цитировать
//
// 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
Гость
Re: Проблема с перегрузкой фукцыи QHeaderView::paintsection()
«
Ответ #10 :
Апреля 09, 2009, 17:18 »
Я уже впринципе так и сделал.... но тут ищо одна задачка: как мне теперь подстпвить етот унаследований клас от QHeaderView моему QTbaleView?
Записан
spirit
Гость
Re: Проблема с перегрузкой фукцыи QHeaderView::paintsection()
«
Ответ #11 :
Апреля 09, 2009, 17:21 »
очень просто: см.
QTableView::setVerticalHeader
&
QTableView::setHorizontalHeader
.
Записан
rokky05
Гость
Re: Проблема с перегрузкой фукцыи QHeaderView::paintsection()
«
Ответ #12 :
Апреля 09, 2009, 17:29 »
Цитата: spirit от Апреля 09, 2009, 17:21
очень просто: см.
QTableView::setVerticalHeader
&
QTableView::setHorizontalHeader
.
работает!!! сенкс
Записан
Jo
Гость
Re: Проблема с перегрузкой фукцыи QHeaderView::paintsection()
«
Ответ #13 :
Ноября 25, 2009, 15:31 »
Не стал создавать новую тему, продолжу эту.
Столкнулся примерно с той же проблемой, только необходимо переопределить метод paintEvent в наследнике от
QTableView
. Родная реализация меня почти что всем устраивает, хочу лишь сделать так что бы вертикальные линии сетки не рисовались.
Неужели мне придется "копировать" практически все что есть в приватном классе этой вьюхи, только для того что бы убрать эти линии?
Да и вообще реально ли собрать свой класс как бы сказать гибрид QTableView и QTableViewPrivate.
Если да, то как это делается?
Просто из за такой конструкции в Qt вообще непонятно как частично менять методы унаследованного класса.
Помогите пожалуйста.
Записан
spectre71
Гость
Re: Проблема с перегрузкой фукцыи QHeaderView::paintsection()
«
Ответ #14 :
Ноября 25, 2009, 17:38 »
Цитата: Jo от Ноября 25, 2009, 15:31
Не стал создавать новую тему, продолжу эту.
Столкнулся примерно с той же проблемой, только необходимо переопределить метод paintEvent в наследнике от
QTableView
. Родная реализация меня почти что всем устраивает, хочу лишь сделать так что бы вертикальные линии сетки не рисовались.
Неужели мне придется "копировать" практически все что есть в приватном классе этой вьюхи, только для того что бы убрать эти линии?
Да и вообще реально ли собрать свой класс как бы сказать гибрид QTableView и QTableViewPrivate.
Если да, то как это делается?
Просто из за такой конструкции в Qt вообще непонятно как частично менять методы унаследованного класса.
Помогите пожалуйста.
Отправь лучше заявку троллям.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...