как я могу заставить QLabel вести себя как ссылка? Я имею в виду, что я хотел бы иметь возможность щелкнуть по нему, а затем это вызовет некоторую команду на нем.
Создание QLabel ведет себя как гиперссылка
Ответ 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/"));
}