2015-02-12 20 views
5

A QMainWindow viene assegnato un colore di sfondo grigio scuro utilizzando QSS. Vorrei anche cambiare il colore dei bordi e il colore della barra del titolo.Come cambiare il colore dei bordi di QMainWindow e della barra del titolo?

Come ottenere il controllo dell'aspetto dei bordi QMainWindow e della barra del titolo?

Mi piacerebbe sapere come cambiare i loro colori e come controllare la larghezza dei bordi e l'altezza della barra del titolo.

enter image description here

from PyQt4.QtCore import * 
from PyQt4.QtGui import * 

appStyle=""" 
QMainWindow{ 
background-color: darkgray; 
} 
""" 

class GUI(QMainWindow): 
    def __init__(self): 
     super(GUI, self).__init__() 
     self.setStyleSheet(appStyle) 

if __name__ == '__main__': 
    if not QApplication.instance(): app=QApplication([]) 
    w=GUI() 
    w.setStyleSheet(appStyle) 
    w.show() 
    w.raise_() 

    sys.exit(app.exec_()) 

risposta

5

A mia conoscenza non è possibile (su Windows magari con alcune chiamate a carico del sistema operativo speciale) modificare i confini e di intestazione di un widget di primo livello (vera e propria finestra sul desktop) in Qt perché questi vengono consegnati dal sistema operativo.

È tuttavia possibile impostare il widget frameless e aggiungere i bordi.

Esempio:

from PySide import QtGui, QtCore 

app = QtGui.QApplication([]) 
app.setStyleSheet('QMainWindow{background-color: darkgray;border: 1px solid black;}') 

w = QtGui.QMainWindow() 
w.setWindowFlags(QtCore.Qt.FramelessWindowHint) 
w.show() 

app.exec_() 

e si presenta come

enter image description here

Si vede che purtroppo il solito barra di intestazione svanisce, quindi nessun trascinamento, nessun ridimensionamento, nessuna chiusura o minimizzare. Questo quindi tutto deve essere implementato da solo. Vedi ad esempio How can I handle events in the titlebar and change its color etc ?.

Problemi correlati