crossplatform.ru

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

3 страниц V  < 1 2 3  
Ответить в данную темуНачать новую тему
> Delegate 2 - HtmlDelegate, пост, придающий смысл теме Delegate ;)
Obey-Kun
  опции профиля:
сообщение 2.12.2010, 23:00
Сообщение #21


Студент
*

Группа: Участник
Сообщений: 96
Регистрация: 24.3.2010
Пользователь №: 1556

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




Репутация:   0  


Спасибо! Только сделаю это с помощью eventFilter, дабы лишний раз не наследовать.
Кстати, с твоим подходом было бы логичнее использовать QHeaderView::paintSection.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Obey-Kun
  опции профиля:
сообщение 2.12.2010, 23:35
Сообщение #22


Студент
*

Группа: Участник
Сообщений: 96
Регистрация: 24.3.2010
Пользователь №: 1556

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




Репутация:   0  


Что я делаю не так? В конструкторе делаю
m_table_view->horizontalHeader()->installEventFilter(this);


И делаю метод
bool SoilsWidget::eventFilter(QObject *watched, QEvent *event)
{
    if ( event->type() == QEvent::Paint ) {
        qDebug() << watched << event;
        return true;
    } else {
        return QWidget::eventFilter(watched, event);
    }
}


И ничего. Ничего в консоль не выводится. Хедер рисуется как ни в чём не бывало.

p.s.: блин, наверное надо было новую тему создать, но уже поздно, это сообщение я не могу удалить.

Сообщение отредактировал Obey-Kun - 2.12.2010, 23:39
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 3.12.2010, 0:10
Сообщение #23


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


фильтр нужно устанавливать для viewport заголовка

m_table_view->horizontalHeader()->viewport()->installEventFilter(this);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Obey-Kun
  опции профиля:
сообщение 3.12.2010, 0:31
Сообщение #24


Студент
*

Группа: Участник
Сообщений: 96
Регистрация: 24.3.2010
Пользователь №: 1556

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




Репутация:   0  


спасибо! правда, решение с фильтром не прокатило, ибо используются защищённые методы, пришлось унаследовать.
ты там метод layoutRect используешь... что это? компилятор ругается на его отсутствие, в документации не нашёл...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Obey-Kun
  опции профиля:
сообщение 3.12.2010, 1:15
Сообщение #25


Студент
*

Группа: Участник
Сообщений: 96
Регистрация: 24.3.2010
Пользователь №: 1556

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




Репутация:   0  


Да уж, при насследовании, оказывается, не удастся восстановить все фичи QHeaderView. Например, учитывать позицию мыши при отрисовке (в некоторых стилях она учитывается). Не получится, так как в оригинальном методе прорисовки используются некоторые приватные методы.
Пока решил повременить с рендеринг rich text у себя в программе. Заодно проголосовал за баг Qt: 2380.

Кстати, насчёт изначального вопроса темы. Вот более короткое (и менее полное) решение: http://developer.qt.nokia.com/faq/answer/h...n_my_qtableview

Сообщение отредактировал Obey-Kun - 3.12.2010, 1:21
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 3.12.2010, 8:42
Сообщение #26


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


Цитата(Obey-Kun @ 3.12.2010, 0:31) *
ты там метод layoutRect используешь... что это?
Смотри 4 сообщение темы. Это функция которую я писал для выравнивания текста в ячейке. Написана она конечно коряво, но это не главное. Кому надо адаптирует
Цитата(Obey-Kun @ 3.12.2010, 1:15) *
Кстати, насчёт изначального вопроса темы. Вот более короткое (и менее полное) решение: http://developer.qt.nokia.com/faq/answer/h...n_my_qtableview
Решение идентичное нашему. Да и сложно придумать что то иное. Сам когда то это решение подсмотрел в исходниках QLabel. К стати, в исходники рекомендую по чаще заглядывать, там можно на многие вопросы ответ найти.

Цитата(Obey-Kun @ 3.12.2010, 1:15) *
Не получится, так как в оригинальном методе прорисовки используются некоторые приватные методы.
Ну так можно код этих приватных методов позаимствовать.
А какой функционал не удалось поддержать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 1.12.2024, 12:49