2012-07-31 13 views
6

मेरे पास दो कस्टम-स्टाइल QPushButton बटन हैं। जैसेक्यूपशबटन दृश्य समस्या

QPushButton 
{ 
    background-color:#9dce2c; 
    border-radius:7px; 
    border:1px solid #83c41a; 
    color:#ffffff; 
    font-size:15px; 
    font-weight:bold; 
    padding:4px 24px; 
    text-decoration:none; 
} 
QPushButton:pressed 
{ 
    border:2px solid black; 
} 

अब यहाँ यह क्या लग रहा है:

Ok button

जो ठीक है यहाँ Ok बटन के लिए स्टाइलशीट है। हालांकि, अगर बटन क्लिक किया जाता है (ध्यान केंद्रित हो जाता है), यह इस तरह देखने के लिए शुरू होता है:

Ok button focused

ध्यान दें कि पाठ के चारों ओर थोड़ा अस्पष्ट आयत। ऐसा लगता है कि पाठ "चुना गया" है। जब बटन फोकस खो देता है, तो यह फिर से सामान्य दिखना शुरू कर देता है। मुझे लगता है कि ऐसा होता है क्योंकि चयनित नियंत्रण इस तरह हाइलाइट हो जाते हैं:

enter image description here

हालांकि, मैं अपने बटन अपरिवर्तित रहना चाहते हैं, कोई फर्क नहीं पड़ता कि क्या यह है या नहीं ध्यान केंद्रित कर रहा है। क्या इस मुद्दे को हल करने का कोई तरीका है?

+0

पेंट इवेंट – Rolle

उत्तर

3

समाधान मिला। यह बहुत सरल हो गया।

समस्या वास्तव में बटन प्राप्त करने के कारण हुई थी। मुझे बस इतना करना है कि बटन focusPolicy विशेषता NoFocus पर सेट करें। यह QtDesigner में या तो किया जा सकता है:

enter image description here

या कोड में:

ui.okButton->setFocusPolicy(Qt::NoFocus);

के बाद यह किया है, बटन पर क्लिक यह फोकस पाने के लिए पैदा नहीं होगी, और उपस्थिति नहीं बदलेगी।

+3

आपको व्यवहार में थोड़ा अंतर हो सकता है - जब आप बटन पर ध्यान केंद्रित करते हैं आप स्पेस कुंजी द्वारा इसे 'दबा सकते हैं', लेकिन यह सब आपके लिए आवश्यक चीज़ों पर निर्भर करता है। व्यक्तिगत रूप से मुझे हमेशा जीयूआई पसंद है जिसे कीबोर्ड द्वारा उपयोग किया जा सकता है, इतना बुरा है कि डेवलपर्स इन दिनों इस सुविधा को अनदेखा करते हैं :( – kolenda

+0

@ कोलेन्डा, हाँ , मुझे इसके बारे में पता है। मेरे पास मेरे फॉर्म पर 'QLineEdit' है, जिसे उपयोगकर्ता अपनी सामग्री इनपुट करने के लिए उपयोग करेगा। मैं इस' QLineEdit' में 'एंटर' हिट के लिए ट्रैक करूंगा, और जब ऐसा होता है तो बटन दबाएं – SingerOfTheFall

+0

@ कोलेन्डा, हालांकि यह एक अच्छा मुद्दा है, मुझे यह बहुत निराशाजनक लगता है कि भरने को पूरा करने के लिए 'एंटर' नहीं मारा जा सकता है। – SingerOfTheFall

0

मैंने कोशिश नहीं की लेकिन मुझे लगता है कि आप QPushButton:hover को QPushButton के समान शैली में सेट करके इसे ठीक कर सकते हैं। कुछ डिफ़ॉल्ट शैली है जो बटन को होवर पर लाल बनाती है, आपको बस यह पता लगाना होगा कि यह कौन सा है (शायद hover) और इसे ओवरराइड करें।

+0

ओवरराइड यह होवरिंग पर लाल नहीं बनता है। यह क्लिक होने के बाद ऐसा हो जाता है, और तब तक बना रहता है जब तक कि कोई अन्य नियंत्रण क्लिक न हो जाए। – SingerOfTheFall

+0

@SingerOfTheFall, दाएं, फिर 'QPushButton: focus' स्थिति आज़माएं। –

+0

बस कोशिश की, मदद नहीं करता है = ( – SingerOfTheFall

0

यहाँ: http://doc.qt.io/qt-5/stylesheet-examples.html

मैंने पाया की तरह पैरामीटर:

"selection-color: yellow;" 
"selection-background-color: blue;" 

मैं उन्हें प्रयास नहीं किया है, लेकिन यह हो सकता है कि तुम क्या जरूरत है।

3

यह नारंगी आयत निकालता है:

QPushButton:focus { 
    outline: none; 
} 

पुनश्च: इतना है कि इस राज्य में उपयोगकर्ता के लिए रहता है "दिखाई" आप एक बदली हुई पृष्ठभूमि रंग की तरह फोकस राज्य के लिए कुछ शैली जोड़ने के लिए प्रयास करना चाहिए।

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