Search code examples
c++qtqt4icons

Standard and "exotic" icons


I'm trying to use the standard icons in Qt for a QToolButton but I have a problem. My code is:

m_buttonZoomPlus->setIcon(QStyle::standardIcon(QStyle::SP_DesktopIcon));

I get the error message :

cannot call member function 'QIcon QStyle::standardIcon(QStyle::StandardPixmap, const QStyleOption*, const QWidget*) const' without object

What does it mean? Do I Have to create an empty QStyle object and call the standardIcon function on it?

Besides, I found a list of standard icons here: http://doc.trolltech.com/main-snapshot/qstyle.html#StandardPixmap-enum

Is this list exhaustive or are there other standard icons? I'm looking for instance for a zoom-in/out icon and I've not yet been able to find it.

Thank you very much for you help.


Solution

  • It means standardIcon is not a static method so you can't call it that way. You need to construct a QStyle and initialize it appropriately then you can use that method to get a specific icon.

    Edit: Jeremy is right. If you aren't changing the style or defining your own style you can simply use the following:

    QApplication::style()->standardIcon(QStyle::SP_DesktopIcon);
    

    Reference: http://doc.qt.io/qt-5/qstyle.html#standardIcon