Заставить QLabel вести себя как гиперссылка - PullRequest
32 голосов
/ 08 декабря 2011

как я могу заставить QLabel вести себя как ссылка?Я имею в виду, что я хотел бы иметь возможность щелкнуть по нему, а затем это вызовет некоторую команду для него.

Ответы [ 2 ]

87 голосов
/ 08 декабря 2011

QLabel делает это уже .

Пример кода:

myLabel->setText("<a href=\"http://example.com/\">Click Here!</a>");
myLabel->setTextFormat(Qt::RichText);
myLabel->setTextInteractionFlags(Qt::TextBrowserInteraction);
myLabel->setOpenExternalLinks(true);
12 голосов
/ 18 января 2016

Ответ от cmannnett85 подходит, если вы просто хотите открыть URL-адрес при щелчке по ссылке, и вы согласны с тем, чтобы встраивать этот URL-адрес в текстовое поле метки. Если вы хотите сделать что-то немного индивидуальное, сделайте следующее:

QLabel * myLabel = new QLabel();
myLabel->setName("myLabel");
myLabel->setText("<a href=\"whatever\">text</a>");
myLabel->setTextInteractionFlags(Qt::TextBrowserInteraction);

Затем вы можете подключить сигнал linkActivated метки к слоту и делать все, что вы хотите в этом слоте. (Этот ответ предполагает, что у вас есть базовые знания о сигналах и слотах Qt.)

Слот может выглядеть примерно так:

void MainWindow::on_myLabel_linkActivated(const QString & link)
{
    QDesktopServices::openUrl(QUrl("http://www.example.com/"));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...