Qt:如何制作exe文件的超链接

时间:2013-08-21 19:45:38

标签: qt

你好简单的问题,但我找不到答案。 我在桌面上的标签完整路径exe文件,如何使它成为clickble超链接 那将启动exe?

2 个答案:

答案 0 :(得分:3)

您可以使用此代码:

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

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

答案 1 :(得分: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);
}