我想向用户显示一个带有链接的警告 QMessageBox。这相对容易,我只需要确保我在消息框上设置了 RichText 文本格式,QMessageBox
其余的由设置完成。done()
但是,如果用户单击链接,我还想关闭消息框(如 some-sort-of-call-to ) - 语义是用户确认消息并做出决定。
问题:QMessageBox
隐藏linkActivated
来自其内部的信号QLabel
(用于存储文本)。
我想我可以扩展QMessageBox
类并在构造函数中做这个非常丑陋的黑客攻击:
QLabel *lbl = findChild<QLabel*>(QString("qt_msgbox_label"));
assert(lbl != NULL);
connect(lbl, SIGNAL(linkActivated(const QString&)), this, SLOT(handle_link_activation(const QString&)));
但是虽然找到的标签findChild
不为空,并且"qt_msgbox_label"
绝对正确(从源代码复制),并且没有“没有这样的信号/插槽”消息,但当我单击链接时,我的插槽永远不会被调用。
我想避免自己编写QDialog
会模仿这种QMessageBox
行为的代码。有谁知道我如何捕捉到这个信号?