2015-04-17 11 views
6

मेरे पास QTabWidget है जिसे टैबविड्ज कहा जाता है। इसमें तीन टैब हैं: "बेसिक", "एडवांस्ड", और "वर्तमान संरचना"। उस क्रम में विजेट में टैब प्रदर्शित होते हैं।मैं QTabWidget में एक टैब को कैसे अक्षम करूं?

जब भी बूलियन result गलत होता है तो मैं "उन्नत" टैब को अक्षम करना चाहता हूं। मैंने सोचा कि यह इस कोड के रूप में सरल होगा:

bool result = false; 
if (result == false) 
{ 
    tabWidget->widget(1)->setDisabled(true); 
} 

दुर्भाग्य से, इस कोड टैब को निष्क्रिय नहीं है, यह सक्षम बना रहता तब भी जब मैं इसे की जाँच करें:

tabWidget->tabBar()->isTabEnabled(1); // This returns true 

क्यों टैब नहीं है अक्षम हो गए? क्या ऐसा करने का कोई और तरीका है?

मैं क्यूटी 5.4.0 का उपयोग कर रहा हूं।

उत्तर

17

आप सक्षम कर सकते हैं/एक QTabWidget में अलग-अलग टैब सदस्य समारोह setTabEnabled(int index, bool enable) का उपयोग कर अक्षम करें।

अपने कोड स्निपेट के आधार पर यह इस तरह दिखेगा:

bool result = false; 
if (result == false) 
{ 
    tabWidget->setTabEnabled(1, false); 
} 
+2

या अधिक संक्षेप में: 'tabWidget-> setTabEnabled (1, परिणाम); ' – TonyK

1

आप इस तरह से नहीं कर सकते हैं।

आपको पृष्ठ के सभी बच्चों के माध्यम से पुन: प्रयास करना होगा और उन्हें अक्षम करना होगा।

कुछ इस तरह:

QList<QWidget*> list = parentWidget->findChildren<QWidget*>() ; 
foreach(QWidget* w, list) { 
    w->setEnabled(false) ; 
} 
+0

यही मुझे चाहिए। यह टैब सामग्री में परिवर्तन को रोकता है, लेकिन टैब की दृश्यता बरकरार रखता है। –

0

आप टैब के लेआउट को निष्क्रिय कर सकते हैं।

bool result = false; 
if (result == false) 
{ 
    tabWidget->widget(1)->layout()->setDisabled(true); 
} 
संबंधित मुद्दे