2011-01-26 33 views
8

Trong Widget của tôi, tôi có thể làm một cái gì đó như thế:QT: setStyleSheet từ tệp QSS tài nguyên?

MyWindow::MyWindow(QWidget *parent) : 
    QWidget(parent) 
{ 
    ui.setupUi(this); 
    setStyleSheet("QWidget { background-color: red }"); // <--- HERE 
} 

này sẽ thiết lập màu đỏ nền widget.

Tôi có tệp QSS trong tài nguyên của mình. Làm cách nào để hướng dẫn tiện ích con của tôi lấy nội dung của biểu định kiểu từ đó, so với chỉ lấy cú pháp qss làm tham số?

Trả lời

13

OK: bạn thực sự phải "đọc tệp" từ tài nguyên, chuyển đổi tệp thành QString và đưa nó vào setStyleSheet. Ví dụ .:

QFile file(":/qss/default.qss"); 
file.open(QFile::ReadOnly); 
QString styleSheet = QLatin1String(file.readAll()); 
setStyleSheet(styleSheet); 
+2

Nhưng đừng quên gọi EnsurePolished() nếu không biểu định kiểu mới có thể không được áp dụng. – bkausbk

+2

Điều gì được đảm bảo? – user1767754

13

Là một thay thế để thiết lập một style sheet cho mỗi widget, bạn chỉ có thể tải và cài đặt một stylesheet cho một ứng dụng nói chung. Một cái gì đó như thế này:

QApplication app(argc, argv); 

// Load an application style 
QFile styleFile(":/style.qss"); 
styleFile.open(QFile::ReadOnly); 

// Apply the loaded stylesheet 
QString style(styleFile.readAll()); 
app.setStyleSheet(style); 

Trong trường hợp này, tất cả các tiện ích sẽ tự động chọn kiểu từ biểu định kiểu đã cho.

Các vấn đề liên quan