Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: qtист от Ноябрь 11, 2009, 12:40



Название: Анимация в QTableWidget
Отправлено: qtист от Ноябрь 11, 2009, 12:40
создал делегат:

Код
C++ (Qt)
class LabelDelegate : public QItemDelegate
{
   Q_OBJECT
 
public:
   LabelDelegate(QObject *parent);
 
   QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,
                         const QModelIndex &index) const;
 
   void updateEditorGeometry(QWidget *editor,
       const QStyleOptionViewItem &option, const QModelIndex &index) const;
 
  ~LabelDelegate();
 
public:
QMovie *mov;
 
};
 
LabelDelegate::LabelDelegate(QObject *parent)
   : QItemDelegate(parent)
{
   mov=new QMovie(":/Resources/09oiuk.gif");
}
 
 
QWidget *LabelDelegate::createEditor(QWidget *parent,
   const QStyleOptionViewItem &/* option */,
   const QModelIndex &  index ) const
{
  QLabel  *editor = new  QLabel(parent);
 
  editor->setMovie(mov);
  mov->setSpeed(30);
 
   return editor;
}
 
void LabelDelegate::updateEditorGeometry(QWidget *editor,
   const QStyleOptionViewItem &option, const QModelIndex &/* index */) const
{
   editor->setGeometry(option.rect);
   mov->setScaledSize(QSize(option.rect.width(),option.rect.height()));
  mov->start();
}
 
 
LabelDelegate::~LabelDelegate()
{
 
}

Подключил его в некоторую ячейку таблицы - всё работает,всё зашибись!

Надо в некоторый момент времени убрать эту анимацию из определённой ячейки.
Чё-то никак не могу :'(


Название: Re: Анимация в QTableWidget
Отправлено: break от Ноябрь 11, 2009, 12:59
надо сказать модели Submit - или во вьюхе перейти к другой ячейке - тогда экземпляр эдитора в делегате должен удалиться и пропадет ваша анимация


Название: Re: Анимация в QTableWidget
Отправлено: qtист от Ноябрь 11, 2009, 13:57
Цитировать
надо сказать модели Submit

как это?


Название: Re: Анимация в QTableWidget
Отправлено: break от Ноябрь 11, 2009, 15:47
submit - это метод подтверждающий редактирование данных в модели (если установлена политика onManualSubmit) - но это для наследников SQLQueryModel - у вас модель какая?
а второй способ пробовали - через метод вьюва setCurrentIndex ?