问题标签 [qitemdelegate]

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 回答
554 浏览

qt - QItemDelegate:绘制一个不需要的 QCheckBox

我有一个可编辑的模型,它继承了 QAbstractTableModel。也有一个自定义委托来配合它。这是我的第一个可编辑模型,我想我遗漏了一些东西。我非常关注诺基亚的示例。我的模型告诉代理数据可以通过 flags() 进行编辑。当我这样做时,它会在单元格中绘制一个 QSpinBox。

底层模型是一个简单的 std::map。关键是天数,值是速率。
通常,在任何可编辑单元格中绘制的是 QCheckBox,但被幻影出来,然后是数据。如果我双击该值,我会看到编辑器,它恰好是一个基于 QDoubleSpinbox 的自定义小部件。

0 投票
2 回答
2101 浏览

python - 按钮委托问题

我希望有人可以帮助我解决我一直在努力解决的这个烦人的问题。我已经使用附加的代码在委托列的表格视图中插入按钮进行了管理。

问题是要按下按钮,我需要双击“激活”包含单元格。一旦单元格处于活动状态,我就可以按下按钮,所以我总共需要 3 次点击才能按下它。这可能会让您的普通用户感到困惑。

我将这个问题发布到 pyqt 邮件列表,得到的答案是:

“发生的情况是,当 TableWidget 收到点击时,它会创建一个编辑器,但编辑器还没有收到点击。这在大多数情况下是完美的,但如果你绘制一个按钮,它就不是了。”

有人来过这里吗?

在此先感谢,克里斯

0 投票
1 回答
665 浏览

qt - QAbstractItemModel——被重置?QItemDelegate::paint() 被频繁调用

这真让我抓狂。我有一个 QAbstractItemModel、QSortFilterProxyModel 和一个 QStyledItemDelegate。都是子类。在发出以下 dataChanged() 之后,应该只为这两个索引(0,0 和 0,1)调用 QStyledItemDelegate::paint()。但是,我已经确认所有可见单元格都调用了它。

可以肯定的是,我已经将一个插槽连接到我的模型和代理的 modelReset() 和 layoutChanged() 信号。它做了一个简单的 printf()。但是,它永远不会被调用。我很确定我没有对视图或委托做任何时髦的事情。但是,也不完全确定在哪里看。

0 投票
1 回答
1056 浏览

qt - Qt 项目委托

我是 Qt 的新手,并且正在慢慢找到自己的方式。我的目标是让图标中QListViewQFileSytemModel文件名称换行,类似于在任何操作系统上发现的行为,如果名称太长,文本会被拆分。

通过浏览互联网,我相信我需要创建一个自定义类来扩展QAbstractItemDelegate以执行我的特殊绘图和文本换行。但是,我无法找到ItemDelegatestockQListView类开箱即用的默认值。

我想要默认类的原因是我可以在使用自己的渲染器时四处探索并了解更多关于 Qt 组件的生命周期的信息。我想知道是否有人知道在哪里QListView可以找到该类的默认渲染器?

0 投票
1 回答
609 浏览

qt - 如何将 QTableView 设置为 QTableView 的单元格

我有QTableView- mainTableView,在某些单元格中我需要显示另一个QTableView- cellTableView。
实际上我找到了 2 种方法:
1)使用pTableView->setIndexWidget
2)使用pTableView->openPersistentEditor和实现ItemDelegate.
我已经尝试了两种方法,问题是一样的。当我在ItemDelegate没有openPersistentEditor一切的情况下使用时效果很好。否则,据我了解,焦点和HeaderView单元格中的表格存在问题。

我想解决以下问题:

  • 有时会显示 mainTableView 的背景而不是 cellTableView 的 HeaderView。
  • 当我在 cellTableView 的单元格上按下一个键时,该单元格的编辑器未打开,但按下的符号设置为该单元格(编辑器打开-> 编辑器接收“FocusOut”信号-> 编辑器关闭,按下的值存储到细胞)。
    使用空格键或双击编辑效果很好。

有人可以解释如何解决这种行为吗?

0 投票
3 回答
33198 浏览

c++ - Qt 为 QTableView 使用自定义 QItemDelegate

我按照 Qt 提供的 Spin Box Delegate 教程来尝试实现我自己的QItemDelegate. 它将用于指定 aQComboBox来表示QTableView单元格中的数据,但它不起作用。

在此处输入图像描述

我最大的问题是我不知道我什么时候QItemDelegate会被使用。

  • 何时itemModel->setData()使用或何时使用itemModel->setItem()。我怀疑setItem()是因为我重新实现了一个QItemDelegate(强调“项目”),但教程使用setData()它并且工作正常。

  • 我知道如果指定的QItemDelegate不起作用,它会使用默认的,但是我现在指定的那个不起作用怎么办?

  • 我什么时候应该怀疑QTableView使用我的代表。我想指定每个单元格使用哪些代表。这是可能的还是QTableView整个过程中唯一使用一个代表?

  • QComboBox一旦它被显示,我将如何指定要填充的项目QTableView

QItemDelegate在这里实现:

  • 我尝试添加假设使用的单元格的部分QComboBox位于本文下方 mainwindow.cpp 中的注释“已启用”下。

qcomboboxitemdelegate.h

qcomboboxitemdelegate.cpp

mainwindow.cpp :这是我初始化QStandardItemModel

mainwindow.cpp :这是我更新的地方QStandardItemModel

编辑 1

qcomboboxdelegate.cpp

主窗口.cpp

0 投票
1 回答
252 浏览

python - 关闭 QItemdelegate 编辑器时将项目向右移动

我设置了一个 QTableview 和 QItem 委托,编辑器是一个我重新实现的 QCombobox,因为我想修改它的 keyPressEvent。因为如果我在打开 qcombobox 编辑器时按下键,它会选择编辑器中的下一行,但我希望应该选择 tableView 中的下一行,不希望组合框中的行发生变化。

所以这是我的 QComboBox 事件代码:

但是,当我按下键时,正在选择组合框右侧的 tableView 中的项目,为什么关闭编辑器会导致任何选择更改?我怎么能控制它?

0 投票
0 回答
1639 浏览

qt - 如何以编程方式更改 QT 中 QItemDelegate 的值

我已经检查了很多看起来相似的主题,但它们没有帮助,所以我问了这个问题。如果您知道任何已经存在的重复问题,请指导我。

我的情况:

我有一个(QCombobox)QItemDelegate,用于带有 QStandardModel 的 QTableView 的 1 列。现在,当我直接编辑值或使用组合框进行选择时,它工作正常。但我也试图提供一个选项来保存表的状态,以便我可以在需要时重新加载它。

问题:

当我以编程方式设置项目时重新加载时,它不会反映在表中。

我都试过了

1) 获取索引 & 使用 setData 和

2) 检索 QStandardItem 并设置文本。

我还发现 setEditorData 没有被调用。我究竟做错了什么?如何通过代码设置这样一个单元格的值?

编辑:一些细节

我将 QItemDelegate 子类化为 DropDown。

下拉列表.h

下拉列表.cpp

这就是它在表格中的使用方式。

0 投票
0 回答
88 浏览

qt - 当给定值不可接受时重新编辑 QTableView 单元格

我有一个 QTableView,它从自定义模型中获取数据,并使用自定义委托对其进行编辑。

当用户编辑特定单元格时,它会键入一些文本(对象的名称),并且该文本可以被程序接受或不接受(程序不希望有重复的名称)。

我的解决方案是让自定义委托有一个信号:notValidText(QModelIndex) 并使用信号/插槽机制将信号连接到 tableview 编辑(QModelIndex) 插槽。据我所知,这应该重新编辑有问题的单元格:

不幸的是,这不是发生的事情,所以我做错了什么。如果有人能给我小费,我将不胜感激。我只是在这里放了一些代码来显示我做了什么,请问您是否需要我再发帖。

提前致谢

0 投票
1 回答
1951 浏览

qt - QListView State_Selected 的自定义 ItemDelegate

我创建了 CustomItemDelegateQStyledItemDelegate并使用该paint()方法更好地查看我的QListView.

如果我点击一个项目,option.state从来没有State_Selected,这是为什么呢?
我有一个选择模型,单行,选择矩形是可见的。

qDebug只打印出这些:


我正在使用 Qt 5.0.2 32bit (Win)。