2011-12-08 9 views
26

QLabelをリンクのように動作させるにはどうすればよいですか?私が意味することは、それをクリックできるようにしたいと思うということです。そして、それはそれについていくつかのコマンドを呼び出すでしょう。QLabelをハイパーリンクのように動作させる

答えて

74

QLabel does this already

サンプルコード:

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

それを。呼び出すべきfnc /アクションをどのように設定しますか? – user336635

+1

あなたはしません。 'openExternalLinks()'が真で、テキストの相互作用フラグが適切に設定されていると、ラベルのURLを運ぶ 'QDesktopServices :: openUrl()'がトリガされます。 – cmannett85

+0

ありがとうございます。この正規のfncコールで呼び出すことができるかどうか分かりますか – user336635

7

あなただけのリンクがクリックされたときにURLを開きたい場合はcmannnett85からの答えは結構です、そしてあなたは、ラベルのテキストフィールドにそのURLを埋め込んでOKです。あなたは少しカスタム何かをしたい場合は、次の操作を行います。

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/")); 
} 
+0

ありがとうございました。それは働いている。 –

関連する問題