2012-02-16 9 views
7

मेरे पास मेरे विचारों में से किसी एक में चयनित आइटम हटाने के लिए मेनू आइटम पर एक प्रश्न है।क्यूएक्शन शॉर्टकट हमेशा काम नहीं करता

deleteAct = new QAction(tr("Delete Selected"), this); 
deleteAct->setShortcut(QKeySequence::Delete); 
connect(deleteAct, SIGNAL(triggered()), this, SLOT(deleteSelected())); 

मैं सेटअप एक कुंजीपटल शॉर्टकट (कुंजी हटाएँ) जो delectAct कार्यवाही प्रारंभ करना चाहिए: यहाँ मैं कैसे कार्रवाई पैदा करते हैं। यह ज्यादातर समय काम करता है लेकिन कुछ बिंदुओं पर यह काम करना बंद कर देता है ... क्या किसी को पता है कि शॉर्टकट क्यों काम करना बंद कर देगा?

नोट: यदि मैं इसे मेनू आइटम से ट्रिगर करता हूं तो कार्रवाई अभी भी काम करती है। इसका सिर्फ शॉर्टकट नहीं है ...

उत्तर

18

आप एक विजेट के लिए कार्रवाई को जोड़ने के लिए है, क्योंकि यह विजेट है कि होगा की जरूरत है महत्वपूर्ण घटनाओं के लिए सुनना। मान लिया जाये कि "इस" एक MainWindow है, बस

addAction(deleteAct); 

ध्यान दें कि आप एक से अधिक विगेट्स के लिए एक ही कार्रवाई (है कि अलग कार्रवाई अवधारणा के पूरे मुद्दे है) जोड़ सकते हैं करते हैं। इसलिए मेनू में मेनविंडो और पर इसे जोड़ना ठीक है।

+0

+1 मेरा संदर्भ मेनू शॉर्टकट्स तब तक काम नहीं करता जब तक कि मैं मुख्य विंडो क्रियाओं में भी शामिल नहीं हो जाता। – rendon

+0

इसके अलावा, कार्रवाई-> setShortcutContext (...); सेट किया जाना है, उपयोगकर्ता 362638 उत्तर देखें। – Tob

+0

जरूरी नहीं है; डिफ़ॉल्ट शॉर्टकट संदर्भ Qt :: WindowShortcut है, जो मूल पोस्टर के उदाहरण में आप चाहते हैं। विंडो विंडो में हटाए जाने पर निश्चित रूप से विंडो ए में चयनित आइटम को हटाने के लिए आप हटाएं कुंजी नहीं चाहते हैं। क्यूटी :: एप्लिकेशनशॉर्टकट एप्लिकेशन-व्यापी शॉर्टकट्स के लिए समझ में आता है (यानी शॉर्टकट जो एप्लिकेशन की किसी भी विंडो से काम करना चाहिए)। –

6

कार्रवाई की shortcut context बदलते, उदाहरण के लिए प्रयास करें:

deleteAct->setShortcutContext(Qt::ApplicationShortcut); 
0

पूरा कोड देखे बिना, मुझे लगता है कि कहीं यह सक्षम/अक्षम हो जाता है। सुनिश्चित करें कि कन्स्ट्रक्टर में शॉर्टकट हिट हो रहा है और सेटिंग के कारण कहीं और 'अक्षम' नहीं है।

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