2010-10-26 14 views
18

पर क्लिक करें मेरे पास QWidget में आधारित मेरी अपनी कक्षा है। मैंने इस विजेट को QMainWindow में रखा है और मुझे इस विजेट पर पकड़ माउस क्लिक करने की आवश्यकता है।क्यूटी QWidget

मैंने कोशिश की:

connect(my_widget, SIGNAL(clicked()), this, SLOT(exit(0))); 

लेकिन कुछ भी नहीं हो रहा है। मैं यह कैसे कर सकता हूं?

उत्तर

26

QWidget में एक क्लिक() सिग्नल नहीं है, और QMainWindow में बाहर निकलने वाला() स्लॉट नहीं है। एक अप्रत्याशित सिग्नल और अप्रत्याशित स्लॉट से कनेक्ट करना असंभव है। कनेक्ट सफल होने पर कनेक्ट का रिटर्न वैल्यू सत्य होना चाहिए। इस मान को जांचें जब आप यह सुनिश्चित करने के लिए कनेक्शन बनाते हैं कि आपका कोड सही तरीके से काम करेगा।

अपने अनुप्रयोग से बाहर करने के लिए, आप, इसके अलावा qApp->quit()

फोन के रूप में यह दूसरों के द्वारा उल्लेख किया गया है चाहिए, आप एक eventFilter स्थापित करना होगा या

void QWidget::mousePressEvent (QMouseEvent * event) [virtual protected] 

या

void QWidget::mouseReleaseEvent (QMouseEvent * event) [virtual protected] 
reimplement

विधियां।

क्यूटी के आधिकारिक दस्तावेज़ में this के उदाहरण हैं उदाहरण के लिए mousePressEvent(QMouseEvent *event) विधि को दोहराया गया है।

घटना के लिए फ़िल्टर विकल्प, this छोटा उदाहरण देखें।

उम्मीद है कि इससे मदद मिलती है।

5

QWidget में clicked सिग्नल नहीं है। यह काम करने के लिए, घटनाओं का उपयोग करें। सभी विगेट्स घटनाओं का समर्थन है, तो वहाँ ऐसा करने के लिए कुछ शारीरिक श्रम है, लेकिन बहुत ज्यादा नहीं:

  1. अवहेलना अपने विजेट के लिए event समारोह (जो आप से QWidget
  2. जवाब प्रकार की घटनाओं के लिए निकाले जाते हैं QEvent:: MouseButtonPress

वैकल्पिक रूप से, एक eventFilter विधि

गूगल वर्गों और तरीकों मैं कोड नमूने के लिए उल्लेख किया है जोड़ें। और अपने सटीक nee के आधार पर एक पूर्ण समाधान करने के लिए डी एस।

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