42 votes

Faire en sorte que QLabel se comporte comme un hyperlien

Comment faire en sorte qu'un QLabel se comporte comme un lien ? Ce que je veux dire, c'est que j'aimerais pouvoir cliquer dessus et que cela déclenche une commande.

107voto

cmannett85 Points 10096

QLabel le fait déjà .

Exemple de code :

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

22voto

David Grayson Points 22459

La réponse de cmannnett85 convient si vous souhaitez simplement ouvrir une URL lorsque vous cliquez sur le lien et si vous êtes d'accord pour intégrer cette URL dans le champ de texte de l'étiquette. Si vous voulez faire quelque chose de légèrement personnalisé, faites ceci :

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

Vous pouvez ensuite connecter le linkActivated de l'étiquette à un emplacement, et faites ce que vous voulez dans cet emplacement. (Cette réponse suppose que vous avez une familiarité de base avec les signaux et les slots de Qt).

La fente pourrait ressembler à quelque chose comme ceci :

void MainWindow::on_myLabel_linkActivated(const QString & link)
{
    QDesktopServices::openUrl(QUrl("http://www.example.com/"));
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X