如何通过 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);
}
}
};
我有程序:
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);
}
}
};