gpt4 book ai didi

c++ - 在 QTableView 的单个单元格中显示多个图标

转载 作者:搜寻专家 更新时间:2023-10-31 00:23:31 25 4
gpt4 key购买 nike

我正在 QtCreator 中使用 QT4.5 编写一个小型图形用户界面应用程序。

应用程序的主屏幕包含一个带有两列的 QTreeView,第一列是文本,第二列是一组图标。这些图标代表行中显示的项目的最后几个状态。

我不确定最好的方法是什么。我目前通过生成模型的 data() 方法的 QPixmap 来实现这一点。

QVariant MyModel::data(const QModelIndex &index, int role) const
{
if (role == Qt::DisplayRole || role == Qt::EditRole) {
switch(index.column()) {
case 0:
return item_.at(index.row()).title();
}
}
if (role == Qt::DecorationRole) {
switch(index.column()) {
case 1:
return makeImage(item_.add(index.row()).lastStates());
}
}

return QVariant();
}

QVariant MyModel::makeImage(const QList<MyState> &states) const
{
const int IconSize = 22;
QPixmap image(IconSize * states.size(), IconSize);
QPainter painter(&image);

painter.fillRect(0, 0, IconSize * count, IconSize, Qt::transparent);
for (int i = 0; i < states.size(); ++i) {
QIcon * icon = stateIcon(state.at(i));
icon->paint(&painter, IconSize * i, 0, IconSize, IconSize);
}
return image;
}

这行得通,但对于一些小问题,本应透明的背景充满了随机噪声,即使用透明颜色填充也无法解决。

其次,这似乎不是很有效,每次调用时我都会生成一个新图像,我不应该只将图标绘制到单元格的小部件上吗?

在单个单元格中显示多个图标的最佳方式是什么?

最佳答案

我会创建一个基于 hbox 的自定义委托(delegate),您可以在其中放置所有图片。看看delegatesQt Documentation关于model view programming .

关于c++ - 在 QTableView 的单个单元格中显示多个图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1856947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com