crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Delegate
jim1406
  опции профиля:
сообщение 9.4.2009, 6:28
Сообщение #1


Студент
*

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

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




Репутация:   0  


Доброго времени суток...
Есть объект QTableWidget. Нужно "хитро" отображать текст в ячейках. В начале, в качестве проверки, просто пытаюсь воткнуть в ячейку прогресбар (из хелпа).

Пишу:
commanditemdelegate.h
#ifndef COMMANDITEMDELEGATE_H
#define COMMANDITEMDELEGATE_H

#include <QtGui>

class QStyledItemDelegate;

class CommandItemDelegate : public QStyledItemDelegate
{
    Q_OBJECT

public:
    CommandItemDelegate(QObject *parent = 0);
    ~CommandItemDelegate();

    void paint(QPainter *painter, QStyleOptionViewItem &option, QModelIndex &index);

};

#endif // COMMANDITEMDELEGATE_H


commanditemdelegate.cpp
#include "commanditemdelegate.h"
#include <QStyledItemDelegate>

CommandItemDelegate::CommandItemDelegate(QObject *parent) : QStyledItemDelegate(parent)
{
}

CommandItemDelegate::~CommandItemDelegate()
{
}

void CommandItemDelegate::paint(QPainter *painter, QStyleOptionViewItem &option, QModelIndex &index)
{
         int progress = 50;

         QStyleOptionProgressBar progressBarOption;
         progressBarOption.rect = option.rect;
         progressBarOption.minimum = 0;
         progressBarOption.maximum = 100;
         progressBarOption.progress = progress;
         progressBarOption.text = QString::number(progress) + "%";
         progressBarOption.textVisible = true;

         QApplication::style()->drawControl(QStyle::CE_ProgressBar,
                                            &progressBarOption, painter);
    }


в описании класса окна (диалога) на котором таблица
private:
    CommandItemDelegate *commandItemDelegate;//делегат для команд


в конструкторе окна (диалога) на котором таблица
    commandItemDelegate = new CommandItemDelegate();
    ui->tableWidgetAliases->setItemDelegate(commandItemDelegate);


результат нулевой. все тот же текст в ячейках. редактирование сейчас не интересует, поэтому не переопределяю другие функции делегата.

Вопрос: где я не прав?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 9.4.2009, 7:22
Сообщение #2


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

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

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




Репутация:   94  


Цитата(jim1406 @ 9.4.2009, 10:28) *
прогресбар (из хелпа).
это на основе какого примера?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
jim1406
  опции профиля:
сообщение 9.4.2009, 7:36
Сообщение #3


Студент
*

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

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 9.4.2009, 11:22) *
Цитата(jim1406 @ 9.4.2009, 10:28) *
прогресбар (из хелпа).
это на основе какого примера?

в QAbstractItemDelegate
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 9.4.2009, 9:01
Сообщение #4


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

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

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




Репутация:   34  


Посмотри здесь, может что-то поможет, там на 4 страницы накатали: http://www.qtcentre.org/forum/f-qt-program...item--2330.html
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 9.4.2009, 9:16
Сообщение #5


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

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

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




Репутация:   29  


Да тут все просто оказалось. Хотя я намучился скопировав приложенный код.
Неправельно переопределен метод paint

Надо так (ошибки выделены)
void CommandItemDelegate::paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const

И все сразу заработает 8)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
jim1406
  опции профиля:
сообщение 9.4.2009, 10:13
Сообщение #6


Студент
*

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

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




Репутация:   0  


Цитата(igor_bogomolov @ 9.4.2009, 13:16) *
Да тут все просто оказалось. Хотя я намучился скопировав приложенный код.
Неправельно переопределен метод paint

Надо так (ошибки выделены)
void CommandItemDelegate::paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const

И все сразу заработает 8)


:clapping:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 27.4.2024, 6:14