msyz999明仕亚洲官网文娱qt富文本排版告急。

题目

  1. 怎样运用qt富文本在分歧行中左右辨别安排内容

  2. 怎样精确的组合QTextFrame等外容

怎样运用qt富文本在分歧行中左右辨别安排内容

简而言之,需求在QLabel的一行里左对齐安排一些笔墨,右对齐安排一些笔墨。

关于限定QLabel:

  • 由于需求跨QLabel选择笔墨,以是无法运用layout

  • 由于之后的内容需求主动折行,以是paintEvent也并不容易

  • 不过QTextEdit是可行的

如今的实行:

  • 实行过运用qt支持的富文本,没有找到可用的属性(至少运用div的float属性,在两行中左右安排)

  • 实行过运用qt的QTextDocument等外容在QTextEdit中拼接,没有找到可用的办法

怎样精确的组合QTextFrame等外容

在拼接进程中会发生多余的行。

以以下简化过的需求为例:

  • 类谈天框,两条信息背景颜色差别

  • 音讯全文左右上下空出10px(这是为什么要在QTextFrame里面套QTextBlock的缘由,只是写着不用完成)

实现代码根本如下:

import sys
from PyQt4.QtGui import *

msgList = [Hi, Hello, How are you, Fine thank you and you im fine too]

app = QApplicationsys.argv

ted = QTextEdit
cursor = ted.textCursor
for i, msg in enumeratemsgList:
    frameFormat = QTextFrameFormat
    frameFormat.setBackgroundQColor227, 239, 255
        if i % 2 else QColor129, 134, 144
    blockFormat = QTextBlockFormat
    blockFormat.setLeftMargin10

    cursor.movePositionQTextCursor.End
    cursor.insertFrameframeFormat
    cursor.insertBlockblockFormat
    cursor.insertTextmsg

mainWindow = QWidget
layout = QVBoxLayout
layout.addWidgetted
mainWindow.setLayoutlayout
mainWindow.show
sys.exitapp.exec_

发生题目:

QTextFrame和QTextBlock都市发生一行方案之外的空行,辨别对应图中1和2。

实行了好久都没能处理,万望各位不惜见示!

集团以为这种需求还是要上paintEvent来处理。有些需求本身就很宏大,只能硬怼,没有取巧的办法……

假如会写HTML的话,可以后天生HTML文本,然后运用QTextEdit不支持js加载便是。
假如需求更宏大,可以运用Qt的WebView等相干模块去完成。

(看完/读完)这篇文章有何感想! msyz999明仕亚洲官网娱乐的分享…

发表评论

姓名 *
电子邮件 *
站点