3

你好简单的问题,但我找不到答案。我在桌面上显示 exe 文件的标签完整路径,我怎样才能让它启动 exe 的可点击超链接?

4

2 回答 2

3

您可以使用此代码:

QLabel *lbl = new QLabel;
lbl->setText("<a href='file:///c:/fg740p.exe'>Open</a>");
lbl->setOpenExternalLinks(true);
lbl->show();

将c:/fg740p.exe替换为 .exe 文件的路径。您可能知道Open是向用户显示的内容。

于 2013-08-21T20:10:14.330 回答
3

saeed 的代码应该可以在 Windows 上运行,但在其他平台上,安全性更为严格,操作系统可能不允许您以这种方式启动外部应用程序(例如 Linux)。

执行此操作的可移植方法是首先像往常一样创建 QLabel:

QLabel* label = new QLabel(parent);

然后在里面放一个链接:

label->setText("<a href='dummy_string'>Execute</a>");

然后将 linkActivated(QString) 信号连接到一个插槽,以便在单击标签内的链接时收到通知:

connect(label, SIGNAL(linkActivated(QString)), SLOT(onLinkClick()));

由于标签内只有一个链接,因此插槽不需要带参数,因为不需要区分链接。所以它可以是这样的:

void onLinkClick()
{
    QProcess::startDetached("path/to/program.exe");
}

如果您选择使用带有 QString 的插槽,则传递的值将是href链接的文本。这使您可以在 QLabel 中放置多个链接,并知道实际点击了哪些链接。例如:

label->setText("<a href='path/to/1.exe'>Run 1.exe</a>"
                <a href='path/to/2.exe'>Run 2.exe</a>");
connect(label, SIGNAL(linkActivated(QString)), SLOT(onLinkClick(QString)));
// ...

void onLinkClick(QString exeFilePath)
{
    QProcess::startDetached(exeFilePath);
}
于 2013-08-21T20:25:26.603 回答