- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在寻找在我的 QStyledItemDelegate 中使用多行文本编辑的简洁方式。通过返回 QTextEdit 实例,createEditor 实现非常简单
def createEditor(self, parent, option, index):
return QtGui.QTextEdit("Some text")
但是 setModelData
期望从 QWidget
派生的 Edit Widget 作为参数而不是 QTextEdits
base QScrollArea
。 Qt 文档也 tells me (至少在 PyQt 文档中)setModelData
函数尝试从 QWidget UserData 字段获取数据。但是如果没有从 QWidget
派生的编辑小部件,则没有设置数据的选项。目前它抛出一个 AttributeError
因为它在编辑器上找不到 text()
。
是否有一些行之有效的方法来使用非 QWidget 编辑器?还是我只是缺少一些小部件来执行此操作?
目前,我通过使用 toPlainText()
中的 QTextEdit
数据实例化一个 QLineEdit
并将其传递给 setModelData 来快速解决这个问题
。非常哈克!我也可以使用 duck typing 并在 QTextEdit
派生上实现一个 text()
方法。但仍然不是一个好方法,不是吗?在 C++ 中有什么方法可以做到这一点?
最佳答案
项目委托(delegate)的最低要求非常简单。您需要做的就是重新实现 createEditor
、setEditorData
和 setModelData
:
class Delegate(QStyledItemDelegate):
def createEditor(self, parent, options, index):
return QtGui.QTextEdit(parent)
def setEditorData(self, editor, index):
editor.setText(index.data())
def setModelData(self, editor, model, index):
model.setData(index, editor.toPlainText())
使用此解决方案,可以轻松地通过同一个委托(delegate)支持多种不同类型的编辑器。例如,isinstance
检查可用于决定使用哪种类型的编辑器:
def setModelData(self, editor, model, index):
if isinstance(editor, QtGui.QTextEdit):
model.setData(index, editor.toPlainText())
elif isinstance(editor, QtGui.QComboBox):
model.setData(index, editor.currentText())
else:
super(Delegate, self).setModelData(editor, model, index)
参见 A Simple Delegate 部分在Model/View Overview对于一些 C++ 示例。
关于python - PyQt : Using QTextEdit as editor in a QStyledItemDelegate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30615090/
我使用 QTextEdit 的子类显示一些富文本内容. 一些编辑器——尤其是代码编辑器和 IDE 提供了一种可能性,可以一直滚动到最后一行之外,直到最后一行到达 View 的顶部。 我希望能够使用 Q
我已经放弃了让它跑得更快的实际尝试。 我最大的问题是,当我插入 html 时,应用程序会变慢到爬行。我有一个进度条,我正在调用 QCoreApplication.processEvents() (顺便
好吧,我正在做一个IDE系统。基本上,一切正常。虽然,但我有一个问题。 “QTextEdit”类没有用于自动完成的成员“setCompleter”。对? 那么,是否有一些类支持它,包括所有 QText
当我创建一个默认的 QTextEdit 小部件时,它会出现在默认的 Windows 样式边框中。我不想要这个边框,所以我试着把它关掉。我该怎么做? 我使用的是相当旧版本的 Qt (3.2.3)。 最佳
我想用QTextEdit (在只读模式下)显示可点击的超链接,我曾经这样做 QTextEdit *textEdit = new QTextEdit; QTextCursor cursor(textEd
我有一个仅从 qtextedit 返回选定文本的函数。我需要获取纯文本,但此函数返回带有一些控制字符的文本。 例如:函数textEdit->textCursor().selectedText()返回:
为QTextEdit设置文本: te->setPlainText(“Something”) ; te->adjustSize(); 应该只环绕“Something”,而不是QTextEdit正在扩展到
QTextEdit t; t.setHtml(" ");显示带有锐音符的小“a”而不是不间断空格。这种情况仅发生在 Windows 上,而不是 Linux 或 FreeBSD 上。可能是什么
感谢code,它帮助我解决了很多显示文本的问题。但是有一个符号困扰着我: [2K 但看起来像这样:在此处输入图片描述 据我理解ANSI中的该符号的意思-删除该行并在其位置写入新信息。我该怎么办? 最佳
文本编辑器:Sublime Text 3 Python 版本:3.6 UTF-8 PyQt5 我正在 PyQt5 中制作一个记事本,并且我正在制作一个能够在行之间导航的选项,当然,我需要移动文本编辑器
所以我尝试使用 shell 输出(实时)更新 QTextEdit: txtDirb = QTextEdit() dirb_command = "dirb" + " " + url p = subpro
我正在尝试尾随文件并将其连续输出到QTextEdit框。但是,我的子进程和输出位于多进程中。这是我的代码: shouldRun = True wMain = QtGui.QWidget() textb
我想升级我的日志部分以适应日志记录模块。 我的应用程序已经相当先进,并且使用 PySide 进行 GUI。我想设置处理程序来生成不同的日志文件,但也想设置一个写入 QTextEdit 类似控制台的小部
我的程序应该: 从 QLineEdits 收集一些输入; 将其转换为QString; 将其添加到一些常量的QString中; 单击按钮时在 QTextEdit 中输出全部内容。 下面是程序的简化模型。
我有一个带有某种日志查看器的应用程序,它需要能够呈现实时插入其中的格式化日志记录。 我在 Qt 中写这篇文章,到目前为止,我使用 QTextEdit 来呈现文本,使用一些 html 标签对其进行了美化
所以问题是如何从另一个表单设置 textEdit 的值? 最佳答案 您有两个选择,或者您可以简单地从另一个表单中的函数调用其中一个 setText 函数,如下所示: otherForm->setPla
我的 QMainWindow 上有一个 QTextEdit。我已经覆盖了我的主窗口 keyPressEvent 方法并在其中放置了一些热键处理程序(即:Ctrl+J、Ctrl+K)。这些热键对应用程序
是否有任何用于创建文本完成器的 QT 类(如果我键入“hel”,它会自动用“lo”完成单词)?抱歉用词不好,我不知道如何更好地描述它。 最佳答案 有 QCompleter,但默认情况下仅适用于 QLi
我目前正在开发一个文本编辑器,我想创建一个缩写系统。我的意思是,例如,当您编写 html5 然后按 tab 键时,例如您展开这样的代码: ... 也许我使用了错误的关键字,
我正在考虑使用 QTextEdit作为类似控制台的 IO 元素(用于串行数据)。这种方法的问题是(用户)输入和(通信)输出是混合的,它们可能不同步。 要检测新的用户输入,可以存储和比较某些输入事件的
我是一名优秀的程序员,十分优秀!