2015-02-12 24 views
5

Poniżej QMainWindow przypisano ciemnoszary kolor tła za pomocą QSS. Chciałbym również zmienić kolor obramowań i kolor paska tytułu.Jak zmienić kolor ramek QMainWindow i paska tytułu?

Jak uzyskać kontrolę nad wyglądem granic i paska tytułowego QMainWindow?

Chciałbym wiedzieć, jak zmienić ich kolory i jak kontrolować szerokość obramowania i wysokość belki tytułowej.

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_()) 

Odpowiedz

5

Do mojej wiedzy nie można (w systemie Windows może z niektórych połączeń zależnych specjalny OS) modyfikować granice i nagłówek widżet najwyższego poziomu (prawdziwe okno na pulpicie) w Qt, ponieważ są są dostarczane z systemu operacyjnego.

Można jednak ustawić widget frameless i dodać do siebie ramki.

Przykład:

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_() 

I wygląda

enter image description here

Widać, że niestety zwykle bar Nagłówek znika, więc nie ma żadnego przeciąganie, zmiana rozmiaru, nie zamykanie lub zmniejszenia. To wszystko musi być wykonane samodzielnie. Zobacz na przykład How can I handle events in the titlebar and change its color etc ?.