2011-12-08 13 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

की तरह यह होना चाहिए व्यवहार करने के लिए नहीं चाहता है। आप एफएनसी/एक्शन को कैसे सेट अप करते हैं? – user336635

+1

आप नहीं करते हैं। जब 'openExternalLinks() 'सत्य है और टेक्स्ट इंटरैक्शन झंडे को निश्चित रूप से सेट किया गया है, तो' QDesktopServices :: openUrl()' लेबल के URL को ले जाने के लिए ट्रिगर किया गया है। – cmannett85

+0

धन्यवाद +1। क्या आपको पता चलेगा कि मैं इस नियमित एफएनसी कॉल – user336635

7

cmannnett85 से जवाब ठीक है अगर तुम सिर्फ जब लिंक पर क्लिक होने एक यूआरएल को खोलने के लिए चाहते हैं, और आप लेबल का पाठ क्षेत्र में है कि यूआरएल एम्बेड करने के साथ ठीक कर रहे हैं। आप थोड़ा कस्टम कुछ करना चाहते हैं, ऐसा करते हैं:

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

तो फिर तुम एक स्लॉट के लिए लेबल की linkActivated संकेत कनेक्ट कर सकते हैं, और जो आपको लगता है कि स्लॉट में चाहते हैं। (इस उत्तर मानता है कि आपके क्यूटी के संकेतों और स्लॉट के साथ बुनियादी परिचित है।)

स्लॉट कुछ इस तरह दिख सकता है: कुछ विचित्र कारण के लिए

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

बहुत बहुत धन्यवाद। यह काम किया है –

संबंधित मुद्दे