先定义一个 QPixmap,在通过QPainter进行绘画。
例子如下:
QPixmap pixmap(100, 100)
QPainter paint(&pixmap)
paint.drawLine()// drawImage 等等各种draw开头的方法。
用定时器切换静态图片。时间间隔短一点的话,就成动态的图片了。希望能帮到你。
百度了一下,还可以这样:
#include <qapplication.h>
#include <qlabel.h>
//#include <qpixmap.h> //qt中的类
#include <qtimer.h>
#include <qmovie.h>
int main (int argc, char *argv[])
{
QApplication app(argc,argv)
QLabel *label=new QLabel ("", 0)//初始化qlabel
QMovie pm("logo.gif") //设定要显示的图片
label->setMovie(pm)//将图片加载到label上
label->setGeometry( 0, 0, 240, 320 )//屏幕大小,初始位置
app.setMainWidget(label)//将图片设为放置在中间
// QTimer::singleShot( 3*1000, label, SLOT(close()))//显示时间
label->show ()
return app.exec()
}
有多种方法:
用图标的方式:
QTableWidgetItem *it = ui->tableWidget->item(row, col)if (it==0)
{
it=new QTableWidgetItem()
setItem(row, col, it)
}
it->setIcon(QIcon(pixMap))
用setCellWidget:
QLabel* label=new QLabellabel->setPixmap(pixMap)
ui->tableWidget->setCellWidget(row, col, label)
用代理:
class QPixmapItemDele : public QStyledItemDelegate{
public:
QPixmapItemDele(QObject* parent = 0) : QStyledItemDelegate(parent) {}
virtual void paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const
{
if (index.data(Qt::DisplayRole).canConvert<QPixmap>())
{
QPixmap pm = index.data(Qt::DisplayRole).value<QPixmap>()
painter->drawPixmap(0,0,pm)
}
else
{
QStyledItemDelegate::paint(painter, option, index)
}
}
}
......
ui->tableWidget->setItemDelegate(new QPixmapItemDele)
ui->tableWidget->item(row,col)->setData(Qt::DisplayRole, QVariant::fromValue<QPixmap>(pixMap))
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)