2009-07-17 9 views
5

सॉर्टिंग मैं QT4 का उपयोग कर रहा हूं और गतिशील रूप से QMenu में प्रविष्टियां जोड़ रहा हूं। क्या इसे हटाने और एक नया निर्माण किए बिना क्यूमेनू में प्रविष्टियों को सॉर्ट करना संभव है?Qt4 QMenu आइटम

मैंने मूल रूप से सोचा था कि एक विशिष्ट स्थान पर डालने के लिए एक फ़ंक्शन था इसलिए मैं सम्मिलित कर सकता था, लेकिन मैं इसे ढूंढने में सक्षम नहीं हूं।

उत्तर

6

एक बार जोड़ा गया, मुझे नहीं लगता कि आप पुन: व्यवस्थित कर सकते हैं। यद्यपि आप बना रहे हैं, हालांकि आप इसे QWidget::insertAction विधि का उपयोग कर सकते हैं जहां आप इसे चाहते हैं।

void QWidget::insertAction (QAction * before, QAction * action) 

अन्यथा आप QWidget::addActions का उपयोग कर सकते हैं। क्रियाओं की अपनी सूची बनाएं और QMenu में जोड़ने से पहले इसे सॉर्ट करें।

void QWidget::addActions (QList<QAction *> actions) 
1

मेरे कोड में से एक में, मैं क्यूएक्शन को एक अलग सूची में सहेजता हूं और मांग पर मेनू और सबमेनस उत्पन्न करता हूं। सिद्धांत रूप में, मैं वस्तुओं में "वजन" जोड़ सकता हूं और उन्हें फिर से आदेश दिया है, लेकिन मैंने अभी तक इसे लागू नहीं किया है।

परियोजना पृष्ठ यहाँ उपलब्ध है: http://code.google.com/p/qtedit4/wiki/qmdilib

कृपया ध्यान दें कि की QWidget (और QMenu) एक QList जो हो सकता है "पढ़ें" के रूप में जमा हो जाती है, QWidget::actions() का उपयोग कर कार्रवाई। याद रखें कि सूची की प्रतिलिपि बनाई गई है, इसलिए आप क्रियाओं को संशोधित कर सकते हैं लेकिन सूची में ही नहीं। (मुझे उम्मीद है कि मैं गलत नहीं कर रहा हूं ...)