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*));
然后,当您收到带有坐标(称为 x
和 y
)的新警告(例如在 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() 使文本变成超链接