2010-06-03 10 views
19

मैं QDialog का एक उदाहरण बना देता हूं और 'x' (बंद) बटन के बाईं ओर भी '?' बटन। मैं इसे कैसे अक्षम कर सकता हूं? ?क्यूटी - QDialog की अक्षमता "?" बटन

+0

संभावित डुप्लिकेट [मैं कैसे छिपा कर सकते हैं/हटाना एक क्यूटी संवाद के "शीर्षक पट्टी" पर मदद बटन?] (http://stackoverflow.com/questions/81627/how-can-i-hide-delete-the-help-button-on-the-title-bar -of-a-qt-dialog) –

उत्तर

37

बदलें खिड़की झंडे, निर्माता में उदाहरण के लिए: "?"

this->setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint); 
की
+0

धन्यवाद, मुझे यही चाहिए। – Narek

+1

सेटविंडोफ्लैग्स() को कॉल करने का प्रयास सीधे काम नहीं किया क्योंकि '~' लागू नहीं किया गया था। एक और समाधान में इसका उपयोग करना शामिल है & = ऑपरेटर:

 Qt::WindowFlags flags = windowFlags(); flags &= ~Qt::WindowContextHelpButtonHint; setWindowFlags(flags); 

+1

वास्तव में हमें विपरीत समस्या थी, हमारे संवाद में सहायता बटन नहीं था। इस उत्तर ने हमें समस्या की तलाश करने में मदद की। धन्यवाद – Liz

5

क्यूटी 4.6 QDialog प्रलेखन से:

QDialog::QDialog (QWidget * parent = 0, Qt::WindowFlags f = 0) 

माता पिता parent के साथ एक संवाद निर्माण करती है।

एक संवाद हमेशा एक शीर्ष-स्तरीय विजेट होता है, लेकिन यदि उसके माता-पिता हैं, तो इसका डिफ़ॉल्ट स्थान माता-पिता के शीर्ष पर केंद्रित होता है। यह माता-पिता की टास्कबार प्रविष्टि भी साझा करेगा।

विजेट झंडे fQWidget कन्स्ट्रक्टर पर पास किए जाते हैं। यदि, उदाहरण के लिए, आप ** ** f में Qt::WindowTitleHint | Qt::WindowSystemMenuHint पास करें ** ** बटन के शीर्षक पट्टी में यह ** नहीं चाहते हैं।

QWidget::setWindowFlags() भी देखें।

+2

QDialog Qt :: WindowTitleHint के लिए | Qt :: WindowSystemMenuHint झंडे एक असामान्य व्यवहार का कारण बनता है। – Narek

0

यदि आप बस बटन को अक्षम करना चाहते हैं, तो आप setEnabled(bool) पर कॉल कर सकते हैं, लेकिन मुझे संदेह है कि यही पूछा जा रहा है।

आप उस बटन को निकालना चाहते हैं, नीचे देखें:

QDialog एक QDialogButtonBox बटन संवाद पर दिखाने के रूप में उपयोग करने का इरादा है। आप उन बटनों को अक्षम करने के लिए QDialogButtonBox में उपलब्ध एक्सेसर्स का उपयोग कर सकते हैं (साथ ही अन्य सक्षम भी)।

उदाहरण के लिए (प्रलेखन ऊपर से जुड़ा हुआ से):

findButton = new QPushButton(tr("&Find")); 
findButton->setDefault(true); 

moreButton = new QPushButton(tr("&More")); 
moreButton->setCheckable(true); 
moreButton->setAutoDefault(false); 

buttonBox = new QDialogButtonBox(Qt::Vertical); 
buttonBox->addButton(findButton, QDialogButtonBox::ActionRole); 
buttonBox->addButton(moreButton, QDialogButtonBox::ActionRole); 

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

+0

यह एक अच्छी तरह से लिखित उत्तर है, लेकिन मुझे लगता है कि वह संवाद (विंडो सजावट) के लिए शीर्षक पट्टी में बटन का जिक्र कर रहा था। –

+0

ओह। मुझे लगता है कि आप सही हैं - मुझे निश्चित रूप से गलत समझा जाता है :( –

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