日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

Qt工作笔记-QTableWidget设置委托(使用QStyledItemDelegate画3只小猪)

發布時間:2025/3/15 c/c++ 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt工作笔记-QTableWidget设置委托(使用QStyledItemDelegate画3只小猪) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

解析:
1.MyDelegate類為代理,給TableWidget的。
2.MyPic類用于畫圖

運行截圖如下:

源碼如下:

mydelegate.h

#ifndef MYDELEGATE_H #define MYDELEGATE_H#include <QStyledItemDelegate>class MyDelegate : public QStyledItemDelegate {Q_OBJECT public:explicit MyDelegate(QWidget *parent = 0);void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const;QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const;void setEditorData(QWidget *editor, const QModelIndex &index) const;void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const;signals:public slots: };#endif // MYDELEGATE_H

mypic.h

#ifndef MYPIC_H #define MYPIC_H#include <QMetaType> #include <QRect>class QPainter;class MyPic { public:MyPic();void paint(QPainter *painter,const QRect &rect) const; };Q_DECLARE_METATYPE(MyPic)#endif // MYPIC_H

main.cpp

#include <QTableWidget> #include <QTableWidgetItem> #include <QApplication> #include <QHeaderView> #include "mydelegate.h" #include "mypic.h"int main(int argc, char *argv[]) {QApplication a(argc, argv);QTableWidget tableWidget(4,5);QStringList headerList;headerList<<"header1"<<"header2"<<"header3"<<"header4"<<"header5";tableWidget.setHorizontalHeaderLabels(headerList);//it make beautiful headerfor(int i=0;i<headerList.size();i++)tableWidget.horizontalHeader()->setSectionResizeMode(i,QHeaderView::Stretch);for(int i=0;i<tableWidget.rowCount();i++){for(int j=0;j<tableWidget.columnCount();j++){QTableWidgetItem *item=new QTableWidgetItem;item->setData(0,QVariant::fromValue(MyPic()));tableWidget.setItem(i,j,item);}}tableWidget.setItemDelegate(new MyDelegate);tableWidget.resize(600,150);tableWidget.show();return a.exec(); }

mydelegate.cpp

#include "mydelegate.h" #include "mypic.h" #include <QPainter> #include <QDebug>MyDelegate::MyDelegate(QWidget *parent) : QStyledItemDelegate(parent) {}void MyDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const {if(index.data().canConvert<MyPic>()){//qDebug()<<"can be convert!";MyPic mypic=qvariant_cast<MyPic>(index.data());mypic.paint(painter,option.rect);}else{qDebug()<<"can't be convert!";}QStyledItemDelegate::paint(painter, option, index); }QSize MyDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const {return QStyledItemDelegate::sizeHint(option,index); }QWidget *MyDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const {return NULL; }void MyDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const {}void MyDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const {QStyledItemDelegate::setModelData(editor,model,index); }

mypic.cpp

#include "mypic.h" #include <QPainter> #include <QImage>MyPic::MyPic() {}void MyPic::paint(QPainter *painter,const QRect &rect) const {painter->drawImage(rect.x(),rect.y(),QImage(":/img/pig.png").scaled(30,30));painter->drawImage(rect.x()+30,rect.y(),QImage(":/img/pig.png").scaled(30,30));painter->drawImage(rect.x()+30+30,rect.y(),QImage(":/img/pig.png").scaled(30,30)); }

?

總結

以上是生活随笔為你收集整理的Qt工作笔记-QTableWidget设置委托(使用QStyledItemDelegate画3只小猪)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。