2015-02-06 4 views
5

मेरे पास चयन को परिभाषित स्टाइलशीट के साथ QTreeView है। हालांकि, जब मैं "विलय" शैली का उपयोग, वहाँ सजावट पर एक अतिरिक्त नीले चयन आयत है:"फ़्यूज़न" शैली में QTreeView से नीले चयन को हटाएं

blue selection rectangle

मैं शैली पत्रक में show-decoration-selected: 0; का उपयोग कर, साथ ही setAllColumnsShowFocus(false); स्थापित करने की कोशिश की है, लेकिन कर सकते हैं इसे दूर जाने के लिए नहीं मिलता है।

क्या सजावट को शामिल करने वाले चयन के हिस्से को अक्षम या पुन: स्थापित करने का कोई तरीका है?

संदर्भ के लिए, स्टाइलशीट है:

QTreeView, QListView, QToolBar, QTableView 
{ 
    show-decoration-selected: 0; 
    background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0, 
          stop: 0 #797979, stop: 0.2 #CCCCCC, 
          stop: 1.0 #FFFFFF); 
    alternate-background-color: #333333; 
    background-image: url(:/metal_scratched); 
    outline: 0; /* removes focus rectangle*/ 
} 

QTreeView::section, QListView::section, QToolBar::section, QTableView::section 
{ 
    border: 1px solid black; 
} 

QTreeView::item:hover:enabled, QListView::item:hover:enabled, QToolBar::item:hover:enabled, QTableView::item:hover:enabled 
{ 
    background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, 
          stop: 0 transparent, stop: 0.4 rgba(150,150,150,0.5), 
          stop: 0.5 rgba(125,125,125,0.5), stop: 1.0 transparent); 
    border-color: #B0B0B0; 
} 

QTreeView::item:hover:!enabled, QListView:disabled:hover, QToolBar:disabled:hover, QTableView:disabled:hover 
{ 
/* don't highlight */ 
} 

QTreeView::item:selected, QListView::item:selected, QToolBar::item:selected, QTableView::item:selected 
{ 
    background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, 
          stop: 0 transparent, stop: 0.4 rgba(75,75,75,0.5), 
          stop: 0.5 rgba(50,50,50,0.5), stop: 1.0 transparent); 
    border-color: #5A5A5A; 
    color: white; 
} 

उत्तर

8

नीले विरूपण साक्ष्य शैली पत्रक में डिफ़ॉल्ट चयन रंग अधिभावी द्वारा हटाया जा सकता। बाकी सब कुछ छोड़कर (महत्वपूर्ण रूप से, QTreeView::item:selected का उपयोग करके एक नया चयन रंग परिभाषित करना जारी रखें), निम्नलिखित संपत्ति को अवांछित व्यवहार को हटा देगा।

QTreeView 
{ 
    // everything else the same 
    selection-background-color: transparent; 
} 
-1

आगे की समीक्षा के तहत, मैंने पाया कि आप की पैलेट क्यूटी आवेदन स्थापित करने के लिए है एक ही रास्ता सही मायने में यह पूरा करने के।

तो जैसा

,

QApplication app(argc, argv); 
app.setStyle(QStyleFactory::create("fusion")); 
QPalette palette; 
palette.setColor(QPalette::Highlight, QColor(your-color)); 
+0

दुर्भाग्यवश, पैलेट रंग सेट करने से नीली आर्टिफैक्ट को नहीं हटाया जाता है। पैलेट को क्यूटी शैलियों द्वारा व्यापक रूप से सम्मानित नहीं किया जाता है और आमतौर पर स्टाइल शीट के साथ अच्छी तरह से खेल नहीं आता है। –

+0

@ निकोलस होल्थॉस छोड़कर, मैं वर्तमान में एक स्टाइलशीट का उपयोग कर रहा हूं और यह एकमात्र तरीका है कि मैं सभी विजेट्स में नीली हाइलाइट से सफलतापूर्वक छुटकारा पाने में सक्षम था। मैंने जो समाधान दिया है वह भी गिटहब पर कुछ स्टाइलशीट रेपो द्वारा उपयोग किया जाता है। मैंने इसे QDarkStyle रेपो से सटीक होने के लिए लिया। –

+0

मैं बस इतना कह सकता हूं कि यह मेरे आवेदन में समस्या को ठीक नहीं करता है, लेकिन 'चयन-पृष्ठभूमि-रंग' संपत्ति ने किया था। शायद हम विभिन्न क्यूटी संस्करणों का उपयोग कर रहे हैं (मैं 5.4.2 का उपयोग कर रहा हूं), या शायद हमारी समस्या का मूल कारण वास्तव में वही नहीं था। –

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