QTableWidget中怎么把item中的icon居中或者充满整个item?

a294130128 2013-07-31 03:07:41
setTextAlliange()什么的好像不行,只能设置文字,我的item中只有icon,没有文字。
...全文
2232 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
YaoJunJie520 2014-04-23
  • 打赏
  • 举报
回复
你好 你怎么设置的 我现在也是这样的问题?
Aeriala 2014-04-18
  • 打赏
  • 举报
回复
直接在表格项icon属性里设置,QTableWidget->QAbstractItemView->iconsize
a294130128 2013-07-31
  • 打赏
  • 举报
回复
引用 7 楼 u011012932 的回复:
[quote=引用 5 楼 a294130128 的回复:] [quote=引用 4 楼 a294130128 的回复:] [quote=引用 3 楼 u011012932 的回复:] 使用代理 setCellWidget,代理是一个QLabel,QLabel里放你要设置的图标即可!这个做法比较简单
这样是可行的,不过我好像还搞麻烦了,我是用QWidget装了一个label,再用label装了一个Qpixmap。[/quote] 还有一个小问题,我的qpixmap只能是固定大小,不能变大变小,因此要写出充满item的效果只有把item的大小设成和qpixmap大小一样,我是不是哪里搞错了?[/quote] item大小设定固定不变你认为合适吗?你的图片难道也都是一样大小的。。。我感觉图片保持原始大小即可,即使改变大小也是会变形的![/quote] 已经改过来了,多谢提醒。
一去丶二三里 2013-07-31
  • 打赏
  • 举报
回复
引用 5 楼 a294130128 的回复:
[quote=引用 4 楼 a294130128 的回复:] [quote=引用 3 楼 u011012932 的回复:] 使用代理 setCellWidget,代理是一个QLabel,QLabel里放你要设置的图标即可!这个做法比较简单
这样是可行的,不过我好像还搞麻烦了,我是用QWidget装了一个label,再用label装了一个Qpixmap。[/quote] 还有一个小问题,我的qpixmap只能是固定大小,不能变大变小,因此要写出充满item的效果只有把item的大小设成和qpixmap大小一样,我是不是哪里搞错了?[/quote] item大小设定固定不变你认为合适吗?你的图片难道也都是一样大小的。。。我感觉图片保持原始大小即可,即使改变大小也是会变形的!
a294130128 2013-07-31
  • 打赏
  • 举报
回复
引用 1 楼 a605351142 的回复:
class IconDelegate : public QStyledItemDelegate { Q_OBJECT public: IconDelegate(QObject *parent = 0): QStyledItemDelegate(parent) { } void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex & index ) const { //判断是不是icon所在的index if(index.column()!=0 && index.row()!=0){ QStyledItemDelegate::paint(painter,option,index); return; } QPixmap pixmap = QPixmap("icon.png"); qApp->style()->drawItemPixmap(painter, option.rect, Qt::AlignCenter, QPixmap(pixmap)); } }; 然后 tableWidget->setItemDelegate(new IconDelegate(this)); tableWidget->setItemDelegateForColumn(colum, new IconDelegate(this)); tableWidget->setItemDelegateForRow(row, new IconDelegate(this));
这个对于我这样的菜鸟来说有点复杂了。
a294130128 2013-07-31
  • 打赏
  • 举报
回复
引用 4 楼 a294130128 的回复:
[quote=引用 3 楼 u011012932 的回复:] 使用代理 setCellWidget,代理是一个QLabel,QLabel里放你要设置的图标即可!这个做法比较简单
这样是可行的,不过我好像还搞麻烦了,我是用QWidget装了一个label,再用label装了一个Qpixmap。[/quote] 还有一个小问题,我的qpixmap只能是固定大小,不能变大变小,因此要写出充满item的效果只有把item的大小设成和qpixmap大小一样,我是不是哪里搞错了?
a294130128 2013-07-31
  • 打赏
  • 举报
回复
引用 3 楼 u011012932 的回复:
使用代理 setCellWidget,代理是一个QLabel,QLabel里放你要设置的图标即可!这个做法比较简单
这样是可行的,不过我好像还搞麻烦了,我是用QWidget装了一个label,再用label装了一个Qpixmap。
一去丶二三里 2013-07-31
  • 打赏
  • 举报
回复 1
使用代理 setCellWidget,代理是一个QLabel,QLabel里放你要设置的图标即可!这个做法比较简单
海的神话 2013-07-31
  • 打赏
  • 举报
回复
这估计只有自己定义一个item类了。qt内置的item类应该不行
a605351142 2013-07-31
  • 打赏
  • 举报
回复
class IconDelegate : public QStyledItemDelegate { Q_OBJECT public: IconDelegate(QObject *parent = 0): QStyledItemDelegate(parent) { } void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex & index ) const { //判断是不是icon所在的index if(index.column()!=0 && index.row()!=0){ QStyledItemDelegate::paint(painter,option,index); return; } QPixmap pixmap = QPixmap("icon.png"); qApp->style()->drawItemPixmap(painter, option.rect, Qt::AlignCenter, QPixmap(pixmap)); } }; 然后 tableWidget->setItemDelegate(new IconDelegate(this)); tableWidget->setItemDelegateForColumn(colum, new IconDelegate(this)); tableWidget->setItemDelegateForRow(row, new IconDelegate(this));

16,202

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧