问题标签 [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 回答
516 浏览

qt - 通过 QAbstractItemDelegate 以不同方式绘制折叠的 QTreeView 项目

我有一个场景,我想在项目QTreeView折叠时以不同的方式绘制项目,但我认为没有办法这样做,因为模型和委托都不知道视图中项目的折叠/展开状态.

请注意,这不仅仅是希望其样式不同的情况。我需要从每个索引的模型中提取数据以知道要绘制什么,因此样式表不会削减它。

0 投票
1 回答
470 浏览

qt - QItemDelegate:将文本旋转 90 度

我有一个单元格(1 列,5 行),我想以 90 度角显示文本。我知道我需要调整几何图形的大小,但现在我什至无法显示文本。在中间行,我在我的子类 QItemDelegate::paint() 中执行此操作

在这种情况下,基本上我什么都没有打印出来。其他一些问题使我编写了这样的代码。我错过了什么吗?

0 投票
1 回答
1130 浏览

qt - 带有自定义视图小部件的 QItemDelegate

Qt 5.5 有一个虚拟方法来为编辑模式定义一个自定义小部件:

但是如何使用自定义小部件来覆盖“视图”模式?我看到了使用方法的“星级”代表示例,paint但这不是我需要的。我需要显示一个自定义小部件,其中包含其他标准小部件,并在QTableView或的视图模式下使用它QListView。无需弄乱绘制指针和图形 - 只需显示一个自定义小部件(具有 .ui 文件)并包含其他标准小部件及其行为。

例如:有一个下载管理器应用程序可以将下载显示为表格或列表视图。QListView带有下载列表。每个下载都有 URL、标题、TotalSize、DownloadedSize、ProgressBar、Pause 按钮​​、Remove 按钮、Resume 按钮。所有这些都可以是表格中的列 ( QTableView) 或类似于 HTML 的 DIV 在一个单元格中组成 (QListView小部件)

如何实现?有什么类似的QWidget *createViewer(...吗?

QtWidgets 不使用 QML。

0 投票
1 回答
625 浏览

qt - Qt QAbstractItemModel 函数 data() 以未定义的角色调用

我想使用创建自定义列表QListView,因此我必须扩展QListViewQItemDelegate然后QAbstractListModel实现特定方法,以及QAbstractItemModel::data(const QModelIndex & index, int role = Qt::DisplayRole) const. 乍一看它在屏幕上正确显示,但在填充列表模型后出现问题。,该函数被每个具有不同角色data(index,role)的项目模型调用 4-5 次(其中一些未定义角色/超出范围/可能是随机的)。而且它不仅发生在列表模型初始化之后!当我悬停一个列表元素时,视图会使用正确的索引和角色调用 data(index,role),但之后会再次使用意外的角色值调用它。

这似乎是一种尴尬的行为。我找不到奇怪电话的来源。我将日志放入自定义类的每个方法中,以确保我不会错误地调用data(index,role)具有错误值的方法。

有没有人有一些想法在哪里看或为什么会发生这种奇怪的电话?

编辑 “奇怪”调用的来源在:

以某种方式调用QItemDelegate::sizeHint()它时会触发data()具有不同角色值的触发器。

在我的例子中,我定义了从 0(0,1,2,3) 开始的角色值。根据@Jens,这些值是保留的。更改自定义角色的起始值解决了我的问题。

0 投票
1 回答
1094 浏览

python - 如何将 QItemDelegate (QLineEdit) 更改连接到 QSortFilterProxyModel PyQt4?

我试图通过在我的 QtableView 的第一行中继承 QItemDelegate 来设置 QlineEdit:

我只想知道如何将我的ExampleDelegate文本更改连接到lineedit_textchange主类中的函数?

0 投票
2 回答
6277 浏览

qt - How to add different types of delegates in QTreeView

I want to create same kind of QTreeView (not QTreeWidget) structure as shown in attached figure.. This is Property Editor of QT. I am using QT-4.6

enter image description here

On 2nd column, depending on different condition, I can have either a spin box, or a drop down or a checkbox or text edit... and so on... Please guide me on how to set different delegates in different cells of a particular column. From docs, it is evident that there is no straight away API for setting delegate on a cell (rather is available for full widget or a row or a column).

0 投票
0 回答
80 浏览

c++ - 如何在 QTableview 的单元格中呈现用户定义的小部件(不使用 qml)

这几天遇到一个关于qt的问题。我想在我的 qt 应用程序中使用 QTableview 显示一个批处理数据(不是 qml gridview,因为我的应用程序使用小部件)。每个数据项包括一个图像和一个图像名称。我需要让图像显示在一个 qlabel 上,它的名称显示在另一个 qlabel 上。这两个小部件应该显示在我的自定义框架上。然后我会让用户定义的框架显示在每个 QTableView 的单元格中。

从 BigBourin(他也问了类似的问题),我知道我应该实现一个自定义委托,并重新实现painter 函数,就像这样:

我的问题是 item_widget.SetPackageName(index.data(Qt::DisplayRole).toString());

数据从哪里来?数据可以是用户定义的数据类吗?

0 投票
2 回答
413 浏览

c++ - Qt 如何管理从函数 QItemDelegate::createEditor() 返回的 Widget 指针的内存

我正在检查 Qt 示例 Spin Box Delegate 示例。在示例中

后期如何删除指针编辑器?删除是由 QItemDelegate 析构函数完成的吗?但是 QItemDelegate 的析构函数不是虚拟的。任何人都可以帮我解释它是如何工作的?

我不能在 QtCreator 中放置任何断点。我理解的方式是每次调用虚函数 createEditor() 时,都会分配一个新的内存主干,并且客户端代码将在函数结束时丢失指针。关于 createEditor() 的 Qt 文档没有解释。但我猜 tableView 中的每个单元格都会有一个编辑器,对吗?

我真的很想知道 Qt 如何删除那些 QWidget 指针。

谢谢

0 投票
1 回答
1638 浏览

c++ - QItemDelegate,如何在 closeEditor() 信号中提供我自己的 EndEditHint?

我有我自己的表模型从QAbstractTableModel. 它安装在我的视图中(从 子类化QTableView)。在视图内部,我使用委托类(从 子类化QItemDelegate)来编辑项目。

我想设置以下行为:当我使用我的委托完成编辑数据时,模型中的下一个项目(下一行和同一列中的项目)应该变得可编辑。

文档说它是由在信号QAbstractItemDelegate::EditNextItem中发送的提示提供的。closeEditor()但是默认情况下,这个信号是用QAbstractItemDelegate::NoHint参数发送的。问题是我不必在重新实现基本QItemDelegate虚函数时显式调用此信号setModelData(),例如。

文档还说这个信号是由内部事件过滤器发送的,该过滤器在调用QAbstractItemDelegate()构造函数时安装在项目委托上。

我如何提供自己的EndEditHint输入closeEditor()信号?

0 投票
0 回答
2064 浏览

python - 单击QTableView时如何获取委托项目

下面的代码创建了单个QTableView. 有一个QItemDelegate被指定为 PersistentEditor。创建了两种编辑器:QLineEdit为第 0 列创建,为第 1 列创建“QComboBox”。

单击时,tableView我想获取两个编辑器的实例:LineEdit 的实例和组合框的实例。如何做到这一点?