QListView如何显示动态图片(.gif)?
现定义了一个继承QItemDelegate的子类,重写了paint函数,得到了图片路径,可怎么让这张图片显示出来请各位帮忙解决下,谢谢 --------------------编程问答-------------------- --------------------编程问答-------------------- QItemDelegate::paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index)
{
QPixmap bmp("E:/xx.jpg");
p.drawPixmap(option.rect(), bmp);
} --------------------编程问答-------------------- p.drawPixmap(option.rect(), bmp);
这个函数将这个图片显示出来了,但图片是静态的,我现在是需要显示一张gif格式的动态图片 --------------------编程问答-------------------- 试试 QMovie ? --------------------编程问答-------------------- QMovie好像只能用在QLabel上,对于QListView不知道怎么用,希望能给个例子,谢谢 --------------------编程问答-------------------- 看看 QT 的例子 Spin Box Delegate
QWidget *SpinBoxDelegate::createEditor(QWidget *parent,
const QStyleOptionViewItem &/* option */,
const QModelIndex &/* index */) const
{
QSpinBox *editor = new QSpinBox(parent); //这里改QLabel ,setEditorData等都改
editor->setMinimum(0);
editor->setMaximum(100);
return editor;
}
你自己 试试 --------------------编程问答-------------------- .h文件的相关内容:
void paintEvent(QPaintEvent *e);//重载绘制函数
protected slots:
void imageChanged(); //声明槽函数
private:
Ui::Widget *ui;
QMovie *movie; //QMovie变量
QImage currentImage; //保存当前帧图象
构造函数:
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
movie = new QMovie(this);
movie->setFileName("F:/pig.gif");//初始化
connect(movie,SIGNAL(frameChanged(int)),this,SLOT(imageChanged()));//信号连接
movie->start();
}
槽函数:
void Widget::imageChanged()
{
currentImage = movie->currentImage();//获取GIF中的当前帧(图像)
this->update(0,0,currentImage.width(),currentImage.height());//立即重绘
}
重绘函数:
void Widget::paintEvent(QPaintEvent *e)
{
QPainter p(this);
p.drawImage(0, 0, currentImage);//将movie中的当前帧的图像画到Widget 0,0的位置
}
利用这个方法可以封装一个类似于VC的Picture和C#的PictureBox控件来 --------------------编程问答--------------------
我试了你给我的方法,对listview也做了一个delegate类,根据我的试验正常情况下没有显示图片,但我看了网上的评论说这个是在编辑状态下才能出现这个控件,不知该怎么办,请教下 --------------------编程问答-------------------- 回复7楼:
你的方法我想只适合显示有限的几张图片,但现在是一个listview,我不知道它具体要显示几张gif图片,所以感觉不太适合,谢谢 --------------------编程问答-------------------- mark~~~~~ --------------------编程问答-------------------- 先获取QModelIndex
再使用openPersistentEditor
补充:移动开发 , Qt