问题标签 [qstyleditemdelegate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
852 浏览

python - 带有浏览按钮的自定义项目委托的 QTreeView

使用 Qt5 框架(通过 Python 的 pyQt5),我需要创建一个带有参数 - 值列的 QTreeView 小部件,其中某些行的值项必须具有内部“浏览”按钮以打开文件浏览对话框并放置选定的文件到相应值的字段中。

阅读关于项目委托的 Qt 手册,我整理了以下代码:

自定义 BrowseEdit 类(QLineEdit + Browse 操作)

QTreeView 的自定义项目委托:

创建底层模型:

为可浏览的编辑字段设置项目委托:

当我通过按下编辑器中的浏览按钮调用打开文件对话框并在选择文件后尝试关闭对话框时发生错误。那时,会引发一个异常,说 BrowseEdit 对象已被删除!

我意识到发生这种情况是因为项目委托在退出编辑模式(在启动文件浏览对话框时发生)时释放了底层编辑器小部件(在我的情况下为 BrowseEdit)。但是我怎样才能避免这种情况呢?

我尝试过的另一件事是使用QAbstractItemView::setItemDelegateForRow方法,如下所示:

-- 但是这段代码会导致未知的异常导致应用程序崩溃而没有任何回溯消息。

0 投票
1 回答
109 浏览

c++ - Get index of a ComboBoxItemDelegate in a QTableView

I created a ComboBoxItemDelegate which I added in the first column of a QTableView. I tried to use the

method within a connect to get the index of the selected item in the ComboBox. This is what I wrote

But it appears to not work. Debug says

QObject::connect: No such signal MyComboBoxDelegate::currentIndexChanged(int)

I searched on the internet but not a single forum topic helped me to solve my problem.

This is my mycomboboxitemdelegate.cpp

And my mycomboboxitemdelegate.h

Thanks for your help !

0 投票
1 回答
354 浏览

python - 使用整数创建项目,QStandardItem 不提供 QSpinBox

我在我的程序中将 PySide2 和 QTableView 与 QStandardItemModel(称为资源模型的对象)一起使用。当我使用以下代码创建、填充项目并将其放入表中时:

当我双击包含该值的单元格时,它会提供一个用于编辑数据的框,我可以将字母放入其中。我的预期行为是有一个 QSpinBox 以便只能放数字。

这段代码:

正如预期的那样,在双击单元格后呈现一个 QDoubleSpinBox。PyQt5 中的这两个代码都按预期提供了旋转框。

当输入的值只是一个整数时,为什么 QStandardItem 不提供 QSpinBox?是否可以在不编写自定义委托的情况下解决此问题?

感谢您的所有回答。

0 投票
1 回答
642 浏览

pyqt5 - 如何让 QLineEdit 和 QPushButton 在 PyQt5 的 tableview 中以这样的列和样式显示?

我有 3 三张图片,如下所示:

图片1

在此处输入图像描述

在此处输入图像描述

如何让 QLineEdit 和 QPushButton 在 PyQt5 的 tableview 中以这样的列和样式显示?

我有以下三张图片,如下所示,

我想编写一个通过 PyQt5 实现这些功能的 GUI:

  1. 单击鼠标一次,它会选择这一行,并高亮这一行1。就像数字1点到
  2. 几秒钟后,在“单击此处添加文件”再次单击鼠标一次,它将进入编辑模式。就像数字 2 点一样,QLineEdit 和 QPushButton '...' 将显示在第二列。如果我单击“...”,并弹出一个文件选择对话框,当我选择一个文件时,它将用文件绝对路径替换“单击此处添加文件”。

    注意:不是双击鼠标进入编辑模式,应该是单击鼠标一次,几秒钟后,再次单击鼠标,将进入编辑模式。当我选择一个绝对路径非常长的文件时。我可以在 QPushButton '...' 后面看到一些字符显示,看起来 QPushButton 在 QLineEdit 的右侧重叠。

  3. 完成第 2 步后,如果继续在另一行单击鼠标,则第 2 步中的 QLineEdit 和 QPushButton '...' 将消失,如行 'VAR("myModelConer")

我研究了 3 个功能很多天,但无法获得我想要的风格。我将在这里给出我的代码,例如,它是 2 行和 2 列。任何人都可以帮助我修改和完成以上 3 个功能。

提前致谢

0 投票
1 回答
40 浏览

c++ - Qt C++ QStyledItemDelegate 子类 - 鼠标悬停在油漆上

我已经对数据进行了子分类(只是绘制功能)并与我的自定义模型一起QStyledItemDelegate应用于我的数据。表格的单元格绘制正确,选中时也是如此,但鼠标悬停的颜色不是。我想念什么?这是绘画功能.. 单元格都是黑色的,选定的变为绿色,但是当鼠标悬停在任何单元格上时,我没有得到红色。QTableviewQAbstractTableModel

0 投票
1 回答
267 浏览

python - 如何在委托 PyQt 中实现按钮

我正在制作一个翻译文本的程序(见截图)

截屏

我有三个班

用于显示编辑项目的窗口的类:

用于存储、添加、删除和编辑数据的类:

程序的主要类:

如何使用 QStyledItemDelegate 实现按钮删除当前项目并更改另一个 QListView 中的翻译?我无法在 StyleDelegate 类之外访问这些按钮以将它们与 TranslateListModel 类的方法相关联。

0 投票
1 回答
1158 浏览

python - QStyledItemDelegate 内的自定义 QPushButton

问题:

我可以将 QPushButton 添加到 QStyledItemDelegate 就好了。我在委托的 editorEvent 方法中伪造按钮按下,所以当你按下它时,就会发生动作。我无法让我的 QPushButton 的样式表正常工作 - 它只读取第一个背景参数,即“红色”并且在鼠标悬停或按下时不会改变

目前尚不清楚我应该如何设置按钮单击和悬停检测以使按钮像代理上的真实按钮一样。我需要设置一个事件过滤器吗?我应该在视图级别执行此操作吗?我是否在委托的绘制方法中执行此操作?一切的结合?

目标:

  • 将鼠标悬停在列表时间上将显示按钮按钮的图标。
  • 将鼠标悬停在按钮上将更改其背景颜色。
  • 鼠标点击按钮会使背景颜色变暗以显示发生了点击。
  • 如果可能的话,我想在样式表中设置这些参数,但我也不介意在绘制函数中完成所有这些。什么都行!

当前实施

按钮小部件是红色的,带有文件夹图标。这些项目在选择和悬停时正确改变颜色(我想保留它),但项目的按钮根本没有改变。

在此处输入图像描述

谢谢!

到目前为止,这是我汇总的内容:

0 投票
1 回答
583 浏览

c++ - Qt5 QListView 在水平行而不是垂直列表中设置项目

我正在设置QListView一个自定义QStyledItemDelegate项,我希望我的项目呈现在水平“行”中。

假设我们QListView的模型是“A”、“B”和“C”,标准视图会将它们设为:

每个项目占据整个宽度。我想要做的是拥有A BC处于水平方向,即使模型中的每一个都位于单独的行中(并且在整个视图中只有一列)。

X[ A ]X [ B ] [ C ]

X==所选项目背景)

我不能使用 a 的原因QTableView是因为我会让物品变大和变小,因此当它们太宽而不能放在一条线上时需要包装;不断更改表格中的列、行和单元格大小似乎比此工作所需的工作更多,而且我不希望视图中有表格边框。

到目前为止,我已经尝试过覆盖sizeHintpaint方法。我认为我不需要编辑器方法,因为这些项目没有编辑模式可以进入。

任何基本的例子对我来说都足够了。如果您在 PyQt5 中写下您的答案并且它可以帮助我找到我的答案,即使我使用的是 C++,我也会将其标记为正确答案。

0 投票
1 回答
199 浏览

qt - 不处于编辑模式时如何在QTableView中显示QSpinBox

我能够使用 QStyledItemDelegate 在 QTreeView 中添加 QSpinBox 小部件。

但是,QSpinBox 只有在编辑模式下才会出现。即使处于显示模式,如何始终显示此 QSpinBox?

0 投票
1 回答
383 浏览

python - 具有多个 StyledItemDelegateForColumn 的 QAbstractTableModel 和 QTableView 使我的应用程序崩溃

我有带有 QAbstractTableModel 和多个 QStyledItemDelegates 的 QTableView。

我通过 setStyledItemForColumn 设置这些代表。

在这种情况下,我的应用程序崩溃了。

当我按下 1 个键或尝试向右扩展 gui 时发生崩溃。

但如果我使用其中之一,我的应用程序运行良好。

我认为这是一种 Qt 错误。

你知道一些吗?