Qt中的 QGraphicsTextItem 类的使用

这里的前提是你懂得 QGraphics 的用法,如果不懂的话,建议先从这里学习 Qt快速入门系列教程,如果已经有 QWidget 的基础,建议直接学习 第 19 篇及第 20 篇。

QGraphicsTextItem 可以被嵌套

与其他 QGraphicsItem 的子类一样,QGraphicsTextItem 可以被其他的类嵌套,如新建一个子类 QGraphicsTest,继承自 QGraphicsObject,在其构造函数中添加以下代码:

QGraphicsTextItem *testText = new QGraphicsTextItem(this);
testText->setPlainText(tr("InitialD"));
testText->setPos(10, 10);

QGraphicsTextItem 可以作为编辑框

需要设置:

testText->setTextInteractionFlags(Qt::TextEditable);

这样就可以在该图形元素上编辑文字。
但是这里有个问题,你无法使用键盘上的方向键来进行光标的移动。
注意,这并不是因为你将该图形元素嵌套进其他元素中所导致的事件传递错误,因为如果你使用这样的代码,在将其添加到 QGraphicsScene 中时也会发生同样的问题。

这里需要使用的是:

testText->setTextInteractionFlags(Qt::TextEditorInteraction);

这样你就可以使用光标的移动。

在 Qt 的文档中有关于此的说明:

Constant Value Description
Qt::TextEditable 16 The text is fully editable.
Qt::TextEditorInteraction TextSelectableByMouse | TextSelectableByKeyboard | TextEditable The default for a text editor.
Qt::TextBrowserInteraction TextSelectableByMouse | LinksAccessibleByMouse | LinksAccessibleByKeyboard The default for QTextBrowser.

可以理解为,Qt::TextEditable 产生 QTextEdit 的效果,Qt::TextEditorInteraction 产生 QPlainTextEdit 的效果,Qt::TextBrowserInteraction 产生 QTextBrowser 的效果。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简述 图形视图(Graphics View)提供了一个平台,用于大量自定义2D图元的管理与交互,并提供了一个视图部...
    YBshone阅读 5,373评论 0 5
  • 1.Qt概述 1.1 什么是Qt Qt是一个跨平台的C++图形用户界面应用程序框架。它为应用程序开发者提供建立艺术...
    你的社交帐号昵阅读 8,757评论 0 10
  • 《Qt 学习之路 2》原文地址 Qt跨平台策略 GUI 模拟:任何平台都提供了图形绘制函数,例如画点、画线、画面等...
    CharlesZhangCh阅读 2,060评论 0 5
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,822评论 0 10
  • 为什么在头文件中有的是使用前置声明,而有的是包含头文件? 如下代码: 前置声明(forward declarati...
    Joe_HUST阅读 1,329评论 0 6