qt 用鼠标在 Qtextedit 中调整图像大小

萨尔瓦图尔

我的项目是实现一个像 Word 这样的文本编辑器。除了使用鼠标调整图像大小(如 Word 2016)之外,一切都很好,我如何在 QTextEdit 中检测图像,如何选择它然后用鼠标调整它的大小。我检查了在 stackoverflow 中发布的示例,该示例使用 qdialog 调整图像大小,但我需要使用鼠标来完成。请问有什么想法吗?

春天

有四种渲染方式QTextEdit

1.QImageFormat这是最标准的方式QTextEdit重要的是QTextCursor处理。2.QTextObjectInterface这是第二种方式,但非常有用。
3.QGraphicsPixmapItem你必须提前导入QGraphicsView&QGraphicsScene但它QTextBlock不受限制。非常活泼和自由。

4.QPainter drawImage本来是为非交互方式的,我在这个答案中没有使用它。

我推荐(1 或 2)和 3 组合。

当鼠标点击

1.您在QTextEdit.

2.您单击图像。

3.光标必须移动到图像之前或之后。

4.也就是说,光标位置必须在图像之前或之后。

5-我认为您可以通过 QTextCursor 处理来捕获图像格式。

5-b.如果使用QTextObjectInterface,则可以捕获“\ufffc”字符。

6Imageformat属于一个字符,因此您可以通过movePositionKeepAnchor标志方法来选择和捕捉图像QTextCursor

  1. 事先准备好 QGraphics 引擎。

7-1 您可以抓住cursorRect并获得 上的位置QTextEdit您可以使用 cursorRect 的位置,以及图像的宽度和高度。您可以使用它们指定图像。

然后,您调用 QGraphicsItems。你打电话QGraphicsScene.addItem()

  1. 你准备了八个 QGraphicsRectItem 用于鼠标处理在此处输入图片说明和一个 QGraphicsRectItem 用于图像。

  2. 这是准确计算矩形位置的最重要的事情。您决定标准位置并制作八个 rectitem 位置的枢纽。

10.您在QGraphicsRectItem子类中定义控制计算你可能想知道计算方式...

这可能是全局对象,因为它们是临时使用的。

鼠标移动时

11.大约,我解释一下。

如果你用鼠标点击左边的 rectitem, 在此处输入图片说明

我认为您将鼠标光标向左移动,图像向右扩展。

好像是MicroSoft Word里一样的控件,总之你可能想不到高度的变化。不用说,你一定不要改变8个rect的项目大小。

这可能是一个技巧,QGraphicsRectItem.setCursor(QtCore.Qt.PointingHandCursor)很有帮助。

而且我认为变化的比率是+1 或-1 是最好的。它并不复杂,也很容易理解,至少一开始是这样。我建议您不要匹配鼠标光标的移动。最终,用户将难以协调图像的大小。

  1. 你更新宽度和高度QGraphicsRectItemsetWidthsetHeight同时进行。

  2. 这是非常重要的您在同一位置一遍又一遍地删除并重新插入图像。它似乎被用户自动放大或缩小。但图像会立即被删除和添加。当然,您必须重新插入更大或更小的图像。您必须在同一位置重新插入。所以你安装setKeepPositionOnInsert(True)和插入后,`setKeepPositionOnInsert(False)'可能很重要。因为插入后,位置会在插入文本的后面。

15.如果您结束操作图像,则从场景中移除矩形。

16.我忘了说,installEventFilter移动鼠标和连接效果到rectItem可能需要它。但是如果rectItems是全局的,你可以在QTextEdit,mouseEvent处理中调用它们

ps 如果你不明白我说的话,请不要犹豫,通过评论问我。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

QT:用鼠标调整UI元素的大小

来自分类Dev

QTextEdit中的Qt textChange()

来自分类Dev

QTextEdit中的Qt textChange()

来自分类Dev

在Qt中的鼠标移动事件上调整矩形的png图像的大小/比例

来自分类Dev

在QT QTextEdit中粘贴表情符号

来自分类Dev

Qt:用鼠标将QGraphicsItem(boundingRect())调整为QGraphicsScene

来自分类Dev

QT QTextEdit setText崩溃

来自分类Dev

Qt:如何在QTextEdit中设置段落的topMargin

来自分类Dev

用鼠标调整QGraphicsItem的大小

来自分类Dev

在QTextEdit上调整大小的嵌入式图像

来自分类Dev

Qt:同步QLineEdit和QTextEdit

来自分类Dev

调整一个大小后,用鼠标调整其余图像的大小,并保持比例

来自分类Dev

Qt使用鼠标以线性布局调整小部件的大小

来自分类Dev

Qt中的鼠标事件

来自分类Dev

用鼠标调整 Div 大小扩展太快

来自分类Dev

Qt以最佳质量调整图像大小

来自分类Dev

Qt以最佳质量调整图像大小

来自分类Dev

QTextEdit中的文本格式很好,就像Qt Creator一样

来自分类Dev

Qt清除QTextEdit / QPlainTextEdit中的撤消历史记录吗?

来自分类Dev

如何在Qt应用程序中同时隐藏/显示QLabel和QTextEdit?

来自分类Dev

鼠标悬停时调整图像大小

来自分类Dev

在QTextEdit中更改文本

来自分类Dev

在 QTextEdit 中撤消/重做

来自分类Dev

在 Qt 中自动调整小部件的大小

来自分类Dev

Python Qt:交互式可调整大小的QGraphicsItem,鼠标悬停区域未调整大小

来自分类Dev

在保持宽高比的同时用鼠标调整框的大小?

来自分类Dev

用单词C#调整图像大小

来自分类Dev

调整大小后,QTextEdit不显示水平滚动条

来自分类Dev

用Qt显示图像流

Related 相关文章

热门标签

归档