- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 QTableView 和 QSqlTableModel 来显示来自 sqlite DB 的数据。在数据库(和模型)中,有一列包含包含路径的字段,即:“/home/foo/bar.txt”或不包含任何路径。对于 View 中的这一列,我想为具有路径的项目呈现一个图标,为没有任何内容的项目呈现一个不同的图标(并且根本不在 View 中呈现实际的数据/路径)。
我认为我需要设置一个 QStyledItemDelegate 来渲染图标来代替数据,但是所包含示例中的 staritemdelelgate 突出显示了委托(delegate)的编辑器功能(我不想要),而没有任何亮点关于如何渲染 QIcons (或者也许我只是想念它)。我已经查看了 API,但我不清楚如何子类化 QStyledItemDelegate,或者即使我需要为这个用例进行子类化。
关于这是否是可行方法的一些指导,或者如何使用 QStyledItemDelegate 呈现列图标(最好在 python 中)的示例,我们将不胜感激。
编辑:Petr 的帖子解决了这个问题。基于 Petr 的解决方案,我描述的情况的完整实现是:
def data(self, index, role=QtCore.Qt.DisplayRole):
if index.column() == 2:
if role == QtCore.Qt.DecorationRole:
filename = super(MovieModel, self).data(index, QtCore.Qt.DisplayRole)
if not filename == '':
return self.yes_icon
else:
return self.no_icon
elif role == QtCore.Qt.DisplayRole:
return ''
#Other columns/roles:
return super(MovieModel, self).data(index, role)
希望有帮助。
最佳答案
您可以对模型进行子类化,并在项目的 DecorationRole
中返回图标,而不是对委托(delegate)进行子类化。
未经测试的解决方案草图:
class IconModel(QSqlTableModel):
def data(self, index, role=Qt.DisplayRole):
if index.column() == FILENAME_COLUMN_INDEX:
if role == Qt.DecorationRole:
filename = super(IconModel, self).data(index, Qt.DisplayRole)
return icon_for_filename(filename)
elif role == Qt.DisplayRole:
return ''
# Other columns/roles:
return super(IconModel, self).data(index, role)
对委托(delegate)进行子类化更加痛苦。
关于python - 如何使用 QStyledItemDelegate 呈现列的 QIcons?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7941123/
我有这个代码; void FileBrowser::setItemIcon(QStandardItem *item) { // check whether its a file or not
我想在我的 QComboBox 中的条目上包含一个“删除”图标,但我无法捕获鼠标按下事件。我试图在组合框中捕获它,并且尝试重新实现 QIcon 类以在那里捕获鼠标按下。没有骰子。有人知道怎么做吗? -
我有一个自定义文件格式,用于存储一些图像。我在程序运行期间将这些图像加载到内存中。图像以二进制格式加载(即它们在磁盘上的显示方式相同)。我知道图像的格式(几乎都是 jpeg)。问题是我不知道宽度/高度
我尝试了多种方法在 QTableWidget 单元格中显示 QIcon,但我不确定为什么它不起作用。我有一个按钮,按下时会在表格中添加一行。这是代码... void MainWindow::press
我在使用 QIcon(带有 MSVC 2008 的 Qt 4.8.1)时遇到了一些内存泄漏。 这种情况发生在简单的 QAction(如菜单条目,甚至是由 Qt Designer 自动生成的条目)或容器
我有一个带有自定义主题的应用程序,并且禁用的图标呈亮灰色。我想更改禁用的图标色调颜色。 现在我知道有这样的可能性: QTableWidgetItem *name = new QTableWidgetI
我正在尝试扩大 QIcon,但它不起作用。 class Example(QMainWindow): def __init__(self): super().__init__()
目标 我希望用户能够单击 QIcon 来执行某些操作。也就是说,我想将 QIcon 内的鼠标单击事件连接到插槽。 我尝试过的 在我的示例(如下)中,我使用 TreeView ,当用户单击其中一个图标时
我正在开发一个需要 的应用程序显示与不同文件类型关联的图标 . 例如对于 .doc 扩展,我需要它才能显示 Microsoft Word 图标 . 问题: 如何使用 QT sdk 从系统中获取 QIc
openFile = QtGui.QAction(QtGui.QIcon('Black.png'), 'Open', self) 添加 Action 后运行模块时,单击文件时,打开的 Action 没
正如 docs 中所写我想从当前代码编辑 setThemeSearchPaths() : if __name__ == "__main__": app = QtGui.QApplication
我尝试使用派生自 QSettings 的类来存储 QIcon,如下所示: setValue("fancy_icon", QIcon::fromTheme("document-new")); 但是我有一
我有一个额外的窗口,里面有一个文本编辑 + qicon(我称之为 float 编辑)。 我有 2 个 qicons - 用于通常的 DPI(16 x 16 图标),它是 2x 版本(32 x 32)。
我有一个 play button 的 png 格式图像我在其中存储为 embedded resource在我的申请中。 play.png 我已经为 Normal 和 Activ
我正在学习如何使用 Qt 进行 C++ 编程。当我单击一个按钮并且与该按钮相关的矩阵上的位置等于-1时,我想显示这张图像,我还想清除同一个按钮上的文本,我的代码到目前为止部分是: if(Tabulei
我已经为 GUI 菜单创建 QT 自定义设计器小部件工作了一段时间。这个想法是您只需将它拖到设计器中,选择您想要的帧数、每帧按钮的数量等,它就会为您生成一切并调整其大小。 小部件的结构方式有一些属性可
我正在使用 QTableView 和 QSqlTableModel 来显示来自 sqlite DB 的数据。在数据库(和模型)中,有一列包含包含路径的字段,即:“/home/foo/bar.txt”或
我想要一个文本左对齐、图标右对齐的表格单元格。 但是现在,我让图标和文本都左对齐,这是我尝试过的 QtTableWidgetItem * item = new QtTableWidgetItem("p
假设我做了这样的事情: QIcon myIcon(":/resources/icon.ico"); 我以后如何确定该图标的路径,例如 QString path = myIcon.getPath();
我想设计一个新的 QIcon 并希望它看起来像一个固定的文本,周围有一个圆角矩形 .-----. | Phy | `-----´ 当在最终应用了缩放变换的 QPainter 上绘制时,图标应该在没有“
我是一名优秀的程序员,十分优秀!