【问题标题】:QMessageBox with link inside, unable to clickQMessageBox 里面有链接,无法点击
【发布时间】:2012-04-19 04:38:29
【问题描述】:

我已经将textFormat 设置为Qt::RichText,但链接仍然无法点击。

QMessageBox msgBox(this);
msgBox.setWindowTitle(QApplication::applicationName()
                      + " $VER " + QApplication::applicationVersion());
msgBox.setTextFormat(Qt::RichText);   //this is what makes the links clickable
msgBox.setText("<a href=\"google.com\">Google</a>");
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.exec();

有什么解决办法吗?已确认不适用于 Qt 4.7。

【问题讨论】:

  • 这个怎么样:"&lt;a href='http://google.com'&gt;Google&lt;/a&gt;"
  • @Anonymous 也不起作用.. 我真的不知道为什么,它应该在 Linux 上调用 xdg-open
  • 您是否在控制台中获得任何调试输出?简单的独立代码也会发生同样的情况吗?是否有桌面环境的文件打开器应用程序(gvfs-openkde-open 等)?
  • 也许这可以帮助 QMessageBox.setTextInteractionFlags(Qt::LinksAccessibleByMouse);

标签: linux ubuntu qt4.7 qmessagebox


【解决方案1】:

它在我的 Qt 4.7.4 下工作,尽管我不得不修改你的 HTML。最小的例子:

#include <QApplication>
#include <QMessageBox>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QMessageBox msgBox;
    msgBox.setTextFormat(Qt::RichText);   //this is what makes the links clickable
    msgBox.setText("<a href='http://google.com/'>Google</a>");
    msgBox.setStandardButtons(QMessageBox::Ok);
    msgBox.exec();
    return app.exec();
}

如果我使用这个,浏览器选项卡就会打开,并且以下消息会出现在我的控制台中:

Created new window in existing browser session.

如果我使用你的 msgBox.setText 我会收到错误:

gvfs-open: file:///tmp/b/google.com: error opening location: Error stating file '/tmp/b/google.com': No such file or directory

【讨论】:

  • 您尝试过提供的最小示例吗?你能点击链接吗?有什么事吗?任何写入控制台的内容(例如Created new window in existing browser session.)?
猜你喜欢
  • 2021-07-02
  • 2015-10-13
  • 1970-01-01
  • 1970-01-01
  • 2012-08-15
  • 1970-01-01
  • 2018-04-06
  • 2017-10-06
相关资源
最近更新 更多