QTextBrowser / C++ 附加可点击文本

Posted

技术标签:

【中文标题】QTextBrowser / C++ 附加可点击文本【英文标题】:QTextBrowser / C++ append clickable text 【发布时间】:2017-05-16 09:16:52 【问题描述】:

我是使用 QT 的新手,但遇到了问题。 我想检查 2D 电路布局,并且想在窗口上输出警告或错误。每个警告或错误都应包含 X 和 Y 坐标,当我单击 在发出警告时,它应该调用一个将我导航到错误位置的函数 在布局中(坐标系)。

有没有办法让文本正常工作? 我希望你能理解我的问题。

【问题讨论】:

【参考方案1】:

是的,可以用QTextBrowser实现,但是代码会很多,没有任何好处。有一种更快、更简单、更具可扩展性的方法。

只需使用QListWidget 并为每个项目设置用户数据(QListWidgetItem::setData),其中将包含坐标(您可以为此使用QPoint)。

创建QListWidget并将一些槽或函数连接到信号QListWidget::itemClicked

QListWidget* log = new QListWidget;
QObject::connect(log, SIGNAL(itemClicked(QListWidgetItem*)), onItemClicked(QListWidgetItem*));

然后,当您收到带有坐标(称为 xy)的新警告(例如在 QString 中称为 log_string)时:

QListWidgetItem* line = new QListWidgetItem(log_string, log);
line->setData(Qt::UserRole, QVariant(QPoint(x, y)));
log->addItem(line);

现在您只需要在连接到QListWidget::itemClicked信号的槽或函数中以正确的方式处理坐标:

void onItemClicked(QListWidgetItem* item)

  const QPoint coord = item->data(Qt::UserRole).toPoint();
  // process coord.x() and coord.y()

【讨论】:

以上是关于QTextBrowser / C++ 附加可点击文本的主要内容,如果未能解决你的问题,请参考以下文章

QTextBrowser append() 使文本变成超链接

将文本附加到stdout并将其传递给QTextBrowser

添加向 QTextBrowser 插入超链接的功能

QTextBrowser 无法在运行时显示所有数据

如何选择 QTextBrowser 中的所有匹配项

QT:如何在点击事件上展开/折叠文本(qtextbrowser,qwebview,...)