2012-07-31 15 views
6

İki adet özel tarzlı QPushButton düğmem var. İşte Ok düğmesi için stil sayfasıdır: Artık buradaQPushButton visual issue

QPushButton 
{ 
    background-color:#9dce2c; 
    border-radius:7px; 
    border:1px solid #83c41a; 
    color:#ffffff; 
    font-size:15px; 
    font-weight:bold; 
    padding:4px 24px; 
    text-decoration:none; 
} 
QPushButton:pressed 
{ 
    border:2px solid black; 
} 

o göründüğünü oluyor gibi: gayet

Ok button

. düğmesi (odak alır) tıklandığında Ancak, bu benzemeye başlar:

Ok button focused

Not o metnin etrafında hafif gölgeli dikdörtgen. Metin "seçilmiş" gibi görünüyor. Düğme odağı kaybettiğinde, tekrar normal görünmeye başlar. Ben seçilmiş kontroller böyle vurgulanır çünkü bu olur herhalde:

enter image description here

Ancak, benim düğmesi değişmeden kalmak istiyorum, bu odaklanmış dışı olup olmadığı olursa olsun. Bu sorunu çözmenin bir yolu var mı?

+0

geçersiz kılma paintEvent – Rolle

cevap

3

Çözüm bulundu. çok basit çıktı.

Sorun gerçekten odak alma düğmesinden kaynaklandı. Tek yapmam gereken butonun focusPolicy özniteliğini NoFocus'a ayarlamasıdır. Bu QtDesigner ya yapılabilir:

enter image description here

veya kodunda

: Tamamlandıktan sonra

ui.okButton->setFocusPolicy(Qt::NoFocus);

, butona tıklama odağı almak için neden olmaz ve görünüm değişmeyecek.

+3

Düğme üzerinde odaklanmış durumdayken hafif davranış fark edebilirsiniz. Space tuşuna basarak 'tuşuna basabilirsin, ama ihtiyacınız olan her şeye bağlı. Ben klavyenin kullanabileceği GUI'leri her zaman sevdim, geliştiriciler bu günlerde bu özelliği görmezden geldiler :(. – kolenda

+0

@Kolenda, yes Ben. Ben kullanıcı girişine yaptığı şeyler kullanacağı, benim form üzerinde 'QLineEdit' bunun farkında olması ediyorum. Ben Enter' bu' QLineEdit' içinde vurur 'için izler ve bu olduğunda düğme basın zorlamak – SingerOfTheFall

+0

@Kolenda, bu iyi bir nokta olsa da, doldurmayı tamamlamak için 'enter' tuşuna basmamak için çok hayal kırıklığı yaratıyorum. – SingerOfTheFall

0

Denemedim, ancak QPushButton:hover'u QPushButton ile aynı stile ayarlayarak bunu düzeltebilirsiniz. Vurgulu düğmeyi kırmızı yapan varsayılan bir stil var, sadece hangisinin olduğunu (muhtemelen hover) bulmanız ve geçersiz kılmanız gerekiyor. İşte

+0

Gezinme sırasında kırmızı renkte olmaz. Tıklandıktan sonra olur ve diğer herhangi bir kontrol tıklanıncaya kadar kalır. – SingerOfTheFall

+0

@SingerOfTheFall, daha sonra, QPushButton: focus' durumunu deneyin. –

+0

sadece denedim, yardım etmiyor = ( – SingerOfTheFall

3

Bu turuncu dikdörtgen kaldırır:

QPushButton:focus { 
    outline: none; 
} 

Not: Bu durum kullanıcıya "görünür" kalır, böylece değişmiş bir background-color gibi odak durumuna bazı stil eklemek için çalışmalısınız.