Chciałbym ustawić QToolButton za ikony za pomocą arkuszy stylów, takich jak to:Jak ustawić ikony QToolButton za pomocą arkusza stylów?
#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();
}
Skompilowałem to tak:
g++ -O3 -std=c++0x -Wall -Wextra -pedantic test.cpp -lQtCore -lQtGui -I/usr/include/Qt/ -I/usr/include/QtCore/ -I/usr/include/QtGui/
Niestety, powyższe nie działa (ikona nie jest pokazane).
Jeśli używam setIcon, ikona jest wyświetlana prawidłowo.
Co więc robię źle? Jak ustawić ikonę przycisku za pomocą arkusza stylów?
ilustracje użyłem to:
PS Zanotuj że zadałem podobne pytanie here, ale odpowiedź nie działa, gdy tekst jest ustawiony (ikona jest wszystko spłaszczony , a tekst nie jest poniżej ikony).
EDIT 1: Próbowałem również tej funkcji (jak sugeruje Kamil Klimek):
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;
}
ale to również nie działa. Naciśnięcie przycisku lub najechanie nie zmienia ikony.
Ustawiasz obraz, a nie ikonę. spróbuj qproperty-icon: url() –
@KamilKlimek Próbowałem, ale to nie zadziałało. Ustawiłby normalny obraz, ale nie byłby wciśnięty i najechany. Myślę, że to z powodu tego błędu: https://bugreports.qt.nokia.com/browse/QTBUG-2982?page=com.atlassian.streams.streams-jira-plugin:activity-stream-issue-tab –
, a następnie musisz ustawić go jako obraz lub tło! będziesz musiał dostosować rozmiar za pomocą CSS. –