0

所以没有人想使用我正在运行的示例,这里只是更改字体的代码。尽管我认为应该这样做,但它不能按原样工作。如果您取消注释注释行,它会起作用。但为什么?这不应该是默认行为吗?

def changeFont(self):
    cur=self.textedit.textCursor()
    if cur.hasSelection():
        begin=cur.anchor()
        end=cur.position()
        if begin>end:
            helper=end
            end=begin
            begin=helper
    else:
        cur.select(QTextCursor.Document)
        begin=0
        plainText=self.textedit.toPlainText()
        end=len(plainText)

    for i in range(begin,end):
        cur.setPosition(i)
        cur.movePosition(QTextCursor.Right, QTextCursor.KeepAnchor)
        fmt=cur.charFormat()

        #pointSize=fmt.fontPointSize()

        #if fmt.fontUnderline():
        #     underline=True
        #else:
        #    underline=False
        #if fmt.fontItalic():
        #    italic=True
        #else:
        #    italic=False
        #if fmt.fontWeight()==75:
        #    bold=True
        #else:
        #    bold=False
        #if fmt.fontStrikeOut():
        #    strikeOut=True
        #else:
        #    strikeOut=False

        fmt.setFont(QFont(self.font))

        #if underline:
        #    fmt.setFontUnderline(True)
        #if italic:
        #    fmt.setFontItalic(True)
        #if bold:
        #    fmt.setFontWeight(75)
        #if strikeOut:
        #    fmt.setFontStrikeOut(True)

        #fmt.setFontPointSize(pointSize)

        cur.mergeCharFormat(fmt)
4

1 回答 1

0

恕我直言......请澄清问题并将代码减少到最低限度,以证明问题。问题似乎是“你能修复我的代码吗”,大多数人不想阅读这么多代码。

话虽如此,Qt 模型是:TextCursor 将 Format 应用于 TextDocument 的一部分。你得到格式,改变它,然后告诉光标重新应用它(设置它或合并它)。有几类格式(块、字体等)可以独立更改。字体的颜色是它的格式。你得到了格式(里面有颜色),你没有改变格式中的颜色,你重新应用了格式,为什么应该改变颜色?(我没有仔细阅读您的代码,如果我说错了什么,请见谅。)

于 2013-09-01T14:12:04.317 回答