Qt图形视图框架:QGraphicsTextItem

一、描述

QGraphicsTextItem 使用文本的格式化大小和关联的字体来提供 boundingRect()、shape() 和 contains() 的合理实现。如果只需要在图形项中显示纯文本,请考虑改用 QGraphicsSimpleTextItem

二、属性成员

1、openExternalLinks : bool

QGraphicsTextItem 是否应该使用 QDesktopServices::openUrl() 自动打开链接而不是发出 linkActivated() 信号。默认值为false。

2、textCursor : QTextCursor 

文本光标。

三、实用成员函数

 1、[信号] void linkActivated(const QString &link)

点击文本图形项上的链接时,会发出此信号。link 是被点击的链接。注:必须启用setTextInteractionFlags(Qt::TextBrowserInteraction);才会发此信号。 

     item = new QGraphicsTextItem;
     item->setHtml("<a href=\"www.baidu.com\">网址</a>");
     gphs->addItem(item);
     item->setTextInteractionFlags(Qt::TextBrowserInteraction);
     connect(item,&QGraphicsTextItem::linkActivated,[](const QString & url)
     {
         QDesktopServices::openUrl(QUrl(url));
     });

 2、[信号] void linkHovered(const QString &link)

鼠标悬停在文本项上的链接上时,会发出此信号。link 是被悬停的链接。注:必须启用setTextInteractionFlags(Qt::TextBrowserInteraction);才会发此信号

3、void setDefaultTextColor(const QColor &col)

设置默认文本颜色。

4、void setHtml(const QString &text)

设置 HTML 格式文本。如果图形项具有键盘输入焦点,此函数还将调用 ensureVisible() 以确保文本在所有视口中可见。

5、void setPlainText(const QString &text) 

设置纯文本。如果图形项具有键盘输入焦点,此函数还将调用 ensureVisible() 以确保文本在所有视口中可见。

6、void setTextInteractionFlags(Qt::TextInteractionFlags flags)

设置图形项对用户输入的反应。

Qt::TextInteractionFlag

  • Qt::NoTextInteraction:不与文本交互。
  • Qt::TextSelectableByMouse:可以使用鼠标选择文本并使用上下文菜单或快捷键将文本复制到剪贴板。
  • Qt::TextSelectableByKeyboard:可以使用键盘上的光标键选择文本。显示文本光标。
  • Qt::LinksAccessibleByMouse:可以用鼠标突出显示和激活链接。
  • Qt::LinksAccessibleByKeyboard:链接可以使用 tab 聚焦并使用 enter 激活。
  • Qt::TextEditable:文本可编辑。
  • Qt::TextEditorInteraction:文本编辑器的默认设置。(TextSelectableByMouse | TextSelectableByKeyboard | TextEditable)
  • Qt::TextBrowserInteraction:QTextBrowser 的默认设置。(TextSelectableByMouse | LinksAccessibleByMouse | LinksAccessibleByKeyboard)

7、void setTextWidth(qreal width)

设置图形项文本的首选宽度。 如果实际文本比指定的宽度宽,那么它将被分成多行。如果宽度设置为 -1,则文本不会分成多行,除非通过显式换行符或新段落强制执行。默认值为 -1。

    QGraphicsTextItem *item = new QGraphicsTextItem;
    item->setPlainText("黄河之水天上来,奔流到海不复回");
    item->setTextWidth(140);
    gphs->addItem(item);

四、一个例子:文本靠右对齐

    QGraphicsTextItem *item = new QGraphicsTextItem;
    auto document = item->document();
    auto option = document->defaultTextOption();
    option.setAlignment(Qt::AlignRight | Qt::AlignVCenter);
    document->setDefaultTextOption(option);
    item->setPlainText("this is the first line\nthis is the second line\nthis is the third line");
    item->setTextWidth(110);
    gphs->addItem(item);

  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值