Kể từ Qt 5.2
bạn không thể; chưa kiểm tra 5.3
nhưng AFAIK họ đã không thay đổi bất kỳ điều gì trong số QMdiArea/QMdiSubWindow
trong bản phát hành 5.3
.
Giải pháp đơn giản nhất mà bạn có là sử dụng QCommonStyle
và vẽ thanh tiêu đề bằng cách sử dụng QPainter
. Để biết thêm thông tin về việc xem tài liệu QCommonStyle và QStyle. Xin lưu ý rằng bạn nên lấy số QCommonStyle
và không được QStyle
cho lớp phong cách của mình. QCommonStyle
được thừa kế QStyle
để bạn không bị mất bất kỳ thứ gì.
Và nếu bạn muốn đạt được hiệu ứng phức tạp hơn như thả bóng trên cửa sổ phụ sau đó lựa chọn duy nhất bạn đã để lại ở đây là để lấy được QMdiSubWindow
và QMdiArea
, gọi QWidget::setWindowFlags(Qt::FramelessWindowHintflag)
trên lớp có nguồn gốc QMdiSubWindow
và thực hiện từ đầu subwindow của riêng bạn với thanh tiêu đề của riêng bạn. Sau đó, bạn có thể xác định Q_PROPERTY
s của riêng mình theo loại QColor
và truy cập những từ QSS
như tiếp xúc here để tùy chỉnh màu sắc của thanh tiêu đề từ QSS
.
Một tùy chọn khác là tạo tiện ích vùng MDI mới từ đầu nhưng tôi không nghĩ rằng điều này có thể áp dụng được trong trường hợp của bạn. Nếu bạn chỉ cần tùy chỉnh thanh tiêu đề bằng cách sử dụng một phong cách tùy chỉnh là cách tiếp cận tốt nhất bạn có thể giải quyết. Nếu các ví dụ rắc rối có thể được cung cấp dưới dạng bản chỉnh sửa cho bài đăng này.
Nhưng nếu bạn muốn tùy chỉnh tiêu chuẩn QMdiSubWindow
chỉ sử dụng QSS
, rất tiếc là hiện tại không thể thực hiện được.
Đây là vấn đề trong nhiều năm nay. Có cách giải quyết nào để tạo kiểu cho trẻ MDI không? – cytrinox