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