Я хочу показать пользователю предупреждение QMessageBox со ссылкой внутри. Это относительно просто, мне просто нужно убедиться, что я установил текстовый формат RichText в окне сообщения, а настройка QMessageBox
сделает все остальное. Тем не менее, я также хотел бы закрыть окно сообщения (как в некотором роде вызова done()
), если пользователь нажимает на ссылку - семантическое существо, что пользователь признал сообщение и принял решение.
Проблема: 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"
определенно является правильным (c / p 'от источника), и сообщения "нет такого сигнала / слота" нет, мой слот никогда не вызывается при нажатии на ссылку.
Я бы не хотел писать свой собственный QDialog
, который бы имитировал поведение QMessageBox
. Кто-нибудь знает, как я могу поймать этот сигнал?