2012-04-05 5 views
2

Auf dem Bild dargestelltes Dialogfenster mit nur einer Widget-Klasse QTableWidget. Mein Problem ist, dass unteren Grenze des Headers (rotes Quadrat, QHeaderView Klasse) Überschneidungen mit links/rechts farbigen Grenzen! Ich möchte rote Quadrate richtig als grüne Quadrate betrachten.Wie zeichne ich den korrekten CSS-Rahmen im Header?

enter image description here

Hier ist CSS-Code aus Qt Designer, die ich verwende:

QTableView#tableWidget QHeaderView::section:horizontal 
{ 
    height: 24px; 

    border-style: none; 

    border-left: 1px solid #ecedef; 
    border-top: 1px solid #161618; 
    border-right: 1px solid #b1b1b5; 
    border-bottom: 1px solid #161618; 

    background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #f4f4f6, stop:1 #ceced6); 
} 

/* 
QTableView#tableWidget QHeaderView::section:horizontal:first, 
QTableView#tableWidget QHeaderView::section:horizontal:last 
{ 
    border-left-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #f4f4f6, stop:1 #ceced6); 
} 
*/ 

Dank!


aktualisieren: Hier wird Bild gezoomt, nur für den Fall ...

enter image description here

+0

Sieht aus wie ein Qt-Bug – pnezis

+0

@webclectic Nein, ich habe die Lösung unten geschrieben. Thnks! – mosg

Antwort

6

Ich hatte zu verstehen, wie dieses Zeug funktioniert!

Lösung:

QTableView#tableWidget QHeaderView 
{ 
    /* draw the hole hor top & bottom line for the header */ 
    height: 24px; 

    border-top: 1px solid #161618; 
    border-bottom: 1px solid #161618; 
} 

QTableView#tableWidget QHeaderView::section:horizontal:first 
{ 
    border-left-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #f4f4f6, stop:1 #ceced6); 
} 

QTableView#tableWidget QHeaderView::section:horizontal:last 
{ 
    border-right-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #f4f4f6, stop:1 #ceced6); 
} 

QTableView#tableWidget QHeaderView::section:horizontal 
{ 
    /* for each section draw ONLY left & right lines */ 
    height: 24px; 

    border-style: none; 

    border-left: 1px solid #ecedef; 
    border-right: 1px solid #b1b1b5; 

    background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #f4f4f6, stop:1 #ceced6); 

} 

Und für zusätzliche Ergebnis Figur, wie es aussieht:

enter image description here

Danke trotzdem für alle!

+0

Hallo, könnten Sie Ihre eigene Antwort akzeptieren? Das funktioniert sehr gut, und ich denke, es hat mindestens 6 Leuten geholfen ;-). – IAmInPLS

+0

@IAmInPLS Viel Spaß :) – mosg