如何通过 ctrl+V 从剪贴板将 html 插入到 QTextEdit 中?

How to insert html into QTextEdit from clipboard via ctrl+V?

我有程序:

int main(int argc, char *argv[]){   
    QApplication app(argc, argv);       
    QTextEdit te;
    te.setHtml("<!DOCTYPE html>"
        "<html>"
        "<body style = \"background-color:powderblue;\">"
        "<h1>My First Heading< / h1>"
        "<p>My first paragraph.< / p>"
        "< / body>"
        "< / html>");
    te.resize(500, 300);
    te.show();  
    return app.exec();  
}

此程序创建以下 window:

我还有一个程序:

int main(int argc, char *argv[]){   
    QApplication app(argc, argv);       
    QTextEdit te;   
    te.resize(500, 300);
    te.show();  
    return app.exec();  
}

但是如果我复制文本

<!DOCTYPE html>
<html>
<body style="background-color:powderblue;">
<p>This is a paragraph.</p>
<p>This is another paragraph.</p>
</body>
</html>

通过按 ctrl+V 从剪贴板进入程序创建的 window,我看到:

如何重写我的程序以显示 html 如第一张图片所示?

您不能直接粘贴带有缩进空格的 html 代码。尝试先将其复制到 MS word 上,然后从那里粘贴到其他任何地方。

试试这个:

class TextEdit : public QTextEdit{
public:
    TextEdit(QWidget *parent = 0):
        QTextEdit(parent)
    {}
protected:
    void insertFromMimeData(const QMimeData *source){
        if(source->hasText()){
            setHtml(source->text());
        }
        else{
            QTextEdit::insertFromMimeData(source);
        }
    }
};