Подтвердить что ты не робот

Создание QLabel ведет себя как гиперссылка

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

4b9b3361

Ответ 1

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

Пример кода:

myLabel->setText("<a href=\"http://example.com/\">Click Here!</a>");
myLabel->setTextFormat(Qt::RichText);
myLabel->setTextInteractionFlags(Qt::TextBrowserInteraction);
myLabel->setOpenExternalLinks(true);

Ответ 2

Ответ от 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/"));
}