[software development] QTextEdit
Tofloor
poster avatar
136******78
deepin
2024-04-10 16:24
Author

各位大佬 请教一下 Qt如何实现** 类似于一个QTextEdit 我该如何在一遍输入一遍监听是否有超链接呢 或者我直接复制一个超链接进去,也可以变蓝下划线,然后继续输入别的字符就可以恢复到原来的样式?**

是一个文本输入框自动识别超链接的需求。

Reply Favorite View the author
All Replies
忘记、过去
deepin
2024-04-10 16:58
#1

监听 textChanged 信号,然后正则表达式取网址,替换成 这种 html 标签应该就可以吧?

不过性能应该很差......不知道怎么增量判断文本

Reply View the author
把一切操作变成GUI
deepin
Backbone of ecological co-construction group
2024-04-10 17:06
#2
QTextEdit *textEdit = new QTextEdit(this);
textEdit->setAutoFormatting(QTextEdit::AutoAll);

试试

image.png

connect(textEdit, &QTextEdit::textChanged, this, &YourClass::checkForLinks);// ...
void YourClass::checkForLinks() {
QString text = textEdit->toHtml();
// 检查text中是否包含超链接...
}
Reply View the author
136******78
deepin
2024-04-10 17:39
#3
把一切操作变成GUI
QTextEdit *textEdit = new QTextEdit(this);
textEdit->setAutoFormatting(QTextEdit::AutoAll);

试试

image.png

connect(textEdit, &QTextEdit::textChanged, this, &YourClass::checkForLinks);// ...
void YourClass::checkForLinks() {
QString text = textEdit->toHtml();
// 检查text中是否包含超链接...
}

如何判断当前有超链接?正则表达式咋写呀

Reply View the author
136******78
deepin
2024-04-10 17:39
#4
忘记、过去

监听 textChanged 信号,然后正则表达式取网址,替换成 这种 html 标签应该就可以吧?

不过性能应该很差......不知道怎么增量判断文本

有代码吗老哥

Reply View the author
忘记、过去
deepin
2024-04-10 20:07
#5
136******78

有代码吗老哥

QTextEditDemo.zip

可能有 BUG,但应该能用。可以支持点击链接调用浏览器打开

目前输入网址需要手动敲空格或者 Tab 和后面的文字分开,别的好像没发现啥问题了

Reply View the author