2011-12-05 13 views
5

Böyle, stil sayfalarını kullanarak bir QToolButton en simgelerini ayarlamak istiyorum:QtoolButton'un simgeleri stil sayfasını kullanarak nasıl ayarlanır?

#include <QToolButton> 
#include <QApplication> 

QString FormStyleSheetString(const QString & name) 
{ 
    const QString thisItemStyle("QToolButton:enabled { image: url(" + name + "_normal.png); } " 
          "QToolButton:pressed { image: url(" + name + "_pressed.png); } " 
          "QToolButton:disabled { image: url(" + name + "_disabled.png); } " 
          ); 

    return thisItemStyle; 
} 

int main(int argc, char * argv[]) 
{ 
    QApplication qapp(argc,argv); 

    QToolButton button; 
    button.setStyleSheet(FormStyleSheetString("button")); 
    button.setToolButtonStyle(Qt::ToolButtonTextUnderIcon); 
    button.setIconSize(QSize(200,200)); 
    button.setText("some thing..."); 
    button.show(); 

    return qapp.exec(); 
} 

Ben bunu böyle derlenmiş:

g++ -O3 -std=c++0x -Wall -Wextra -pedantic test.cpp -lQtCore -lQtGui -I/usr/include/Qt/ -I/usr/include/QtCore/ -I/usr/include/QtGui/ 

Maalesef yukarıda çalışmıyor (simge değil olarak gösterilmiştir).

setIcon kullanırsam, simge doğru şekilde görüntülenir.

Peki, ne yapıyorum yanlış? Stil sayfasını kullanarak düğmenin simgesi nasıl ayarlanır? Kullandığım

görüntülerdir:
button_normal.png button_pressed.png button_disabled.png

PS I benzer bir soru here sorulan Not al, ama metin ayarlandıktan sonra cevap çalışmıyor (simge bütün ezilmiş olduğu ve metin simgenin altında değil).

DÜZENLEME 1: (Kamil Klimek önerdiği gibi) ben de bu işlevi çalıştı:

QString FormStyleSheetString(const QString & name) 
{ 
    const QString thisItemStyle("QToolButton { qproperty-icon: url(" + name + "_normal.png); }; " 
           "QToolButton:pressed { qproperty-icon: url(" + name + "_pressed.png); }; " 
           "QToolButton:hover { qproperty-icon: url(" + name + "_disabled.png); }; " 
           ); 

    return thisItemStyle; 
} 

ama o da işe yaramadı. Düğmeye basmak veya gezinmek, simgeyi değiştirmez.

+0

Bir görüntüyü simge değil ayarlayabilirsiniz. qproperty-icon'u deneyin: url() –

+0

@KamilKlimek Bunu denedim, ama işe yaramadı. Normal görüntüyü ayarladı, ancak basılmadı ve durmadı. Bence bu hatanın nedeni: https://bugreports.qt.nokia.com/browse/QTBUG-2982?page=com.atlassian.streams.streams-jira-plugin:activity-stream-issue-tab –

+0

görüntü veya arka plan olarak ayarlamanız gerek! CSS ile boyutu ayarlamanız gerekecek. –

cevap

8

Daha sonra o gün ben bir şekilde sorunu çözmek başardı ama çözüm yazılan unuttum:

QString FormStyleSheetString(const QString & name) 
{ 
    const QString thisItemStyle(
    "QToolButton {\n" 
       " border: none;\n" 
       " background: url(" + name + "_normal.png) top center no-repeat;\n" 
       " padding-top: 200px;\n" 
       " width: 200px;\n" 
       " font: bold 14px;\n" 
       " color: red;\n" 
       "}\n" 
       "QToolButton:hover {\n" 
       " background: url("+name+"_hover.png) top center no-repeat;\n" 
       " color: blue;\n" 
       "}\n" 
       "QToolButton:pressed {\n" 
       " background: url("+name+"_pressed.png) top center no-repeat;\n" 
       " color: gray;\n}"); 

    return thisItemStyle; 
} 

Sadece arka planı ayarlamak için yeterli değildi. Ayrıca sabitlenmiş boyuta ihtiyaç vardı.

İlgili konular