2011-08-23 23 views
12

Tôi có nhiều lỗi tại QSS đơn giản (tờ kiểu Qt). Có lỗi của Qt không?Qt style sheets lỗi?

Ví dụ:

enter image description here

Style Sheets:

#check1 { 
    color: red     //didn't work here 
} 

#check2 { 
    color: red;     //but work here 
    background-color: black 
} 

#label1 { 
    color: blue; 
    text-decoration: underline //work fine here 
} 

#label2:hover { 
    color: blue; 
    text-decoration: underline //but didn't work here 
} 

Nguồn:

#include <QtGui> 

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 
    app.setStyleSheet(" #check1 {color: red} \ 
         #check2 {color: red; background-color: black} \ 
         #label1 {color: blue; text-decoration: underline} \ 
         #label2:hover {color: blue; text-decoration: underline}"); 
    QWidget w; w.setFixedSize(120,130); 

    QCheckBox check1("checkbox1",&w); 
    check1.setObjectName("check1"); 
    check1.move(10,0); 

    QCheckBox check2("checkbox1",&w); 
    check2.setObjectName("check2"); 
    check2.move(10,30); 

    QLabel label1("label1", &w); 
    label1.setObjectName("label1"); 
    label1.move(10,60); 

    QLabel label2("label2", &w); 
    label2.setObjectName("label2"); 
    label2.move(10,90); 
    w.show(); 

    return app.exec(); 
} 

qt 4.7.3-3; vòm linux; gnome 3 fallback mode

Trả lời

8

Đối với hộp kiểm đầu tiên, vấn đề là ở đâu đó trong Gtk + phong cách: enter image description here

QLabel, QPushButton hoặc QCheckBox không hỗ trợ thay đổi phông chữ (bao gồm text-decoration) trong selector css :hover pseudo-state. Tiện ích đơn giản nhất có vẻ là QToolButton (có thể được sử dụng để thay thế QLabels nếu bạn thực sự cần).
Thay đổi Palette (màu nền và màu nền trước và sau) cho trạng thái đó được hỗ trợ bởi tất cả các tiện ích.

4

Tôi không thể nói vấn đề với hộp kiểm của bạn là gì, nhưng có thể tìm thấy mẩu sau đây theo tham chiếu trang tính của Qt (Tôi không thể tìm thấy nó trực tuyến, nhưng nó nằm trong Trợ lý Qt)

QLabel hỗ trợ kiểu hộp. Không hỗ trợ: hover pseudo-state.

Nói cách khác, QLabel: hover không được hỗ trợ.

+1

Nhưng màu: màu xanh cho: hover vẫn hoạt động ... – TheHorse

+0

Bạn đã đúng!Đó là lẻ, bởi vì theo tài liệu của họ nó không nên. Tôi biết từ kinh nghiệm, tuy nhiên, việc thay đổi gạch chân không hoạt động như tôi đã cố gắng làm chính xác những gì bạn đang làm ở đây trong quá khứ. – Chris

+0

Qt 4.7 DOES hỗ trợ di chuột http://doc.qt.nokia.com/latest/stylesheet-syntax.html#pseudo-states – spraff

2

Thay vì

// some comment 

sử dụng

/* some comment */ 

. Tôi đoán họ đã chọn hình thức thứ hai vì nó miễn nhiễm với sự phá vỡ dòng mới.

Ngoài ra, nếu vẫn không ổn, thì có vẻ như bạn đã gặp lỗi: https://bugreports.qt-project.org//browse/QTBUG-4307.

Là một workaround cho việc thiết chỉ màu sắc văn bản, hãy thử

#check1:hover { color:red; background-color:transparent; } 

mà làm việc cho tôi.

+0

Nhận xét đã được thêm vào chỉ trong câu hỏi, chúng không tồn tại trong mã nguồn – TheHorse

+0

@TheHorse: điều đó nên được đề cập trong câu hỏi; như vậy, câu trả lời của tôi vẫn áp dụng –

0

nên không

color: red 

được

color: red; 

?

Thiếu dấu chấm phẩy một vài vị trí trong mã được đăng của bạn.

+1

Dấu chấm phẩy không bắt buộc sau mục cuối cùng. – TonyK

+1

... hoặc có thể là bắt buộc. Qt đang thực hiện phân tích cú pháp không phải là một số trình duyệt. Vì vậy, nó là để Nokia để thực hiện nó bất kỳ cách nào họ có thời gian cho. Tôi nghĩ nói chung đó là một thói quen xấu để giả định rằng mọi tính năng tiện lợi tối nghĩa của tiêu chuẩn của người khác được thực hiện. Nếu bạn xem xét một số lớp Qt khác, bạn sẽ luôn tìm thấy một thứ không được triển khai hoặc được triển khai theo cách khác. Ngay cả các trình duyệt cũng không theo kịp tất cả các tiêu chuẩn. – user440297

+0

Không có gì thay đổi với dấu chấm phẩy – TheHorse