当前位置: 首页 > news >正文

公司做seo网站中国电信备案网站

公司做seo网站,中国电信备案网站,网站建设服务承诺,深圳市龙华区观澜街道效果如下: 1、首先我们要设置QListWidget的ViewMode为图片模式IconMode 2、然后确定每个item的大小,重写代理的sizeHint函数 QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const override{//假如整个QListW…

效果如下:

1、首先我们要设置QListWidget的ViewMode为图片模式IconMode

2、然后确定每个item的大小,重写代理的sizeHint函数

QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const override{//假如整个QListWidget每行显示4个item,那么每个item的宽度就是整个QListWidget的宽度减去右边的间距(这里还多减了10px,一行才显示了4个,Qt Bug)//然后除以4,得到每个item的宽度//然后每个item以正方形为区域//返回每个item的尺寸//但是绘制的时候为了显示间距,在每个item的区域绘制时不绘制满,而是将矩形的左上角往内缩spacing的距离int width = (option.widget->width()-spacing-10) / 4;qDebug()<<"widget with:"<<option.widget->width();qDebug()<<"item with:"<<width;return QSize(width, width);}

3、然后重写代理的paint函数

void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override{painter->setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform | QPainter::TextAntialiasing);//每行4个 正方形//绘制区域:将item实际矩形区域的左上角往内缩spacing的距离QRect rect = option.rect.adjusted(spacing, spacing, 0, 0);//绘制图像painter->save();QPixmap pixmap = index.data(Qt::UserRole+1).value<QPixmap>();//得到item的图片数据QSize pixmapSize = pixmap.size();pixmapSize.scale(rect.size(), Qt::KeepAspectRatio);QRect scaledRect(QPoint(0, 0), pixmapSize);//得到图片等比例缩放的矩形scaledRect.moveTopLeft(rect.topLeft());//将图片缩放后的矩形移动到和绘制局域的左上角重合painter->drawPixmap(scaledRect.adjusted(2,2,-2,-2), pixmap);//整体往内缩2px,给边框留空间painter->restore();painter->save();if (option.state.testFlag(QStyle::State_Selected)){//选中,绘制轮廓线painter->setBrush(Qt::NoBrush);QPen pen;pen.setStyle(Qt::SolidLine);pen.setColor(QColor("#ff0000"));pen.setWidth(2);painter->setPen(pen);painter->drawRect(scaledRect);}painter->restore();}

 

 完整代码如下:

#ifndef CUSTOMDELETEGATEFORLISTVIEW_H
#define CUSTOMDELETEGATEFORLISTVIEW_H#include <QStyledItemDelegate>
#include <QPainter>
#include<QDebug>class CustomDeletegateForListView :public QStyledItemDelegate
{Q_OBJECT
public:CustomDeletegateForListView(QObject* parent = nullptr):QStyledItemDelegate(parent){}~CustomDeletegateForListView() = default;protected://重写sizeHint函数,这个函数返回的尺寸决定了每个Item的矩形局域的大小QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const override{//假如整个QListWidget每行显示4个item,那么每个item的宽度就是整个QListWidget的宽度减去右边的间距(这里还多减了10px,一行才显示了4个,Qt Bug)//然后除以4,得到每个item的宽度//然后每个item以正方形为区域//返回每个item的尺寸//但是绘制的时候为了显示间距,在每个item的区域绘制时不绘制满,而是将矩形的左上角往内缩spacing的距离int width = (option.widget->width()-spacing-10) / 4;qDebug()<<"widget with:"<<option.widget->width();qDebug()<<"item with:"<<width;return QSize(width, width);}void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override{painter->setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform | QPainter::TextAntialiasing);//每行4个 正方形//绘制区域:将item实际矩形区域的左上角往内缩spacing的距离QRect rect = option.rect.adjusted(spacing, spacing, 0, 0);//绘制图像painter->save();QPixmap pixmap = index.data(Qt::UserRole+1).value<QPixmap>();//得到item的图片数据QSize pixmapSize = pixmap.size();pixmapSize.scale(rect.size(), Qt::KeepAspectRatio);QRect scaledRect(QPoint(0, 0), pixmapSize);//得到图片等比例缩放的矩形scaledRect.moveTopLeft(rect.topLeft());//将图片缩放后的矩形移动到和绘制局域的左上角重合painter->drawPixmap(scaledRect.adjusted(2,2,-2,-2), pixmap);//整体往内缩2px,给边框留空间painter->restore();painter->save();if (option.state.testFlag(QStyle::State_Selected)){//选中,绘制轮廓线painter->setBrush(Qt::NoBrush);QPen pen;pen.setStyle(Qt::SolidLine);pen.setColor(QColor("#ff0000"));pen.setWidth(2);painter->setPen(pen);painter->drawRect(scaledRect);}painter->restore();}
private:int spacing = 10;//每个网格之间的间距,这个值可以更改
};
#endif // CUSTOMDELETEGATEFORLISTVIEW_H

不支持随着QListWidget的缩放,显示的item也跟着缩放

只能在resizeEvent中将原来的delegate删除,new一个新的delegate设置进去

http://www.dtcms.com/a/443830.html

相关文章:

  • 做网站技术创意设计是什么意思
  • 网站建设平台安全问题有哪些方面中国风古典网站模板
  • 河南郑州网站建设网站建设交流发言材料
  • YOLO入门教程(番外):机器视觉实践—Kaggle CIFAR-10图像分类竞赛
  • 网站建设-部署与发布咸阳软件开发
  • 个人可以做网站吗口碑好网站制作公司哪家好
  • 设计投稿的网站有什么做外贸平台还是网站
  • 外包做网站公司有哪些免费的网站给一个
  • 微商免费推广平台有哪些南昌网络排名优化
  • 网站有二维码吗人脉做的最好的网站
  • 网站开发所需费用技术支持 张家港网站建设
  • 临武网站建设物流网站建设目标
  • 做网站和制作网页的区别竞价托管怎么做
  • 网站制作公司前十名网站不备案可以么
  • 开发商建设审批网站建设网站有哪些方法有哪些
  • 石家庄网站做网站wordpress怎么用
  • 网站域名怎么免费获取微盟小程序是什么
  • 英讯网站建设wordpress 4.9.1模板
  • 网站mssql 导出数据必须网站的访问量
  • 哪些网站可以做百科来源2020网络游戏排行榜
  • 进程、进程、内存、调度总结
  • 网站开发交流公园网站建设方案
  • 汕头网站建设备案wordpress youku videos
  • 找设计工作哪个网站好哈尔滨网页设计培训
  • 品牌网站设计地址wordpress清除插件
  • 南京哪家网站建设比较好中文静态网页模板
  • 个人网站可以做什么WordPress侧边栏跟随
  • 多梦主题建设的网站开平市城乡建设局网站
  • 成都网站建设 常凡云wordpress代码逻辑
  • 福田网站建设乐云seo网站建设模板代码下载