2012-01-30 33 views
7

Trong ứng dụng của tôi, biểu định kiểu cho toàn bộ ứng dụng được lấy từ một tệp tài nguyên được nạp vào ứng dụng.Cập nhật ObjectName của widget không tự động cập nhật kiểu

Tôi có hai stylesheets định nghĩa đó một QListWidget:

QListWidget#Good{ 
..some color properties 
} 

QListWidget#Bad { 
..soem different color properties 
} 

Trong một hình thức, tên Object QListWidget tôi là "Good", vì vậy nó luôn tôn trọng các phong cách #good. Trong thời gian chạy, tôi có một trường hợp mà tôi muốn "SetObjectName" nó để "Bad" và có phong cách thay đổi ngay lập tức trong giao diện người dùng.

tôi đã nhận thấy hai điều:

  1. chỉ gọi "SetObjectName (" Bad ");" doens't thay đổi kiểu từ các phương thức ...
  2. Lần duy nhất "SetObjectName (" Bad ");" các công trình được gọi từ hàm tạo của Widget có chứa QListWidget.

Rõ ràng là tôi đang bỏ lỡ một số giai đoạn "kiểu cập nhật". Lưu ý rằng tôi không thể có "setStyleSheet" trong mã, nó phải đến từ tệp QSS.

Tôi đang thiếu gì?

Trả lời

9

Đã giải quyết vấn đề này. Gọi điện:

style()->unpolish(theWidget); 
style()->polish(theWidget); 

Trên tiện ích của tôi sau khi thay đổi objectName (setObjectName) đã thực hiện thủ thuật.

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