views:

415

answers:

6

What is a cross-platform C++ GUI framework that has good skinning ability?

So I could (and give the users) the ability to customise the GUI.

+10  A: 

The Qt framework allows for changing the appearance of widgets using style sheets (using css). See: http://doc.trolltech.com/4.6/stylesheet.html.

Kyle Lutz
+2  A: 

Qt has convenient support for that with Qt style sheets et al. The Qt labs blog had an example post that might give you an idea.

Georg Fritzsche
+1  A: 

I've used Juce (compatible with Windows, Linux and Mac OS X) in the past and it has a LookAndFeel class (gotta love the name) that allows you to do that.

Adrian Kosmaczewski
Java also call its UI customization LookAndFeel, so there's precedent on that name (however wonky it might be ;).
Marcus Lindblom
+3  A: 

EDIT: As you're looking for something like wxSkin, first why not use it in the first place?

Then, if you don't want to use wxSkin, have a look at Juce. Qt's goal is definitely not themeable GUIs although windows masks and stylesheets are a way to implement them. There is the QSkingObject project on Qt-Apps.org but last time I checked it I found that the quality of the code was poor (of course this is subjective and argumentative).


You can have a look at Juce which has a dual license: GPL and commercial.

Qt (LGPL) has stylesheets to style the widgets, but it still let the operating system draw the windows decorations unless you instruct it to draw frameless windows and draw the decorations by yourself.

However, think twice before going the skinned application route. A typical example is Songbird (written in XUL) which used frameless windows and painted its own titlebar and windows buttons. Then they back-pedaled and switch back to system windows decorations after many users complained.

Gregory Pakosz
i meant something like this http://www.upcase.de/wxSkin/index.html
why not use it then?
Gregory Pakosz
dono its seams experimental , i dont know if it will be good in production
well, at least Juce has been used in music softwares and in fact it has been developed when writing tracktion
Gregory Pakosz
weill juce not free its gpl
+1  A: 

As other say, Qt's stylesheets work well.

You also have the option to customize the drawing in Qt by overriding QStyle. You could allow users to use plugins (exporting a QStyle implementation) to make it super-customizable.

(Then, I don't know if your users are C++ coders or not...)

Marcus Lindblom
A: 

I'd have to vote for XULRunner because it's extremely skinnable. However, it's not pure C++: application code is written in JavaScript while extensions can be implemented as C++ XPCOM components.

StackedCrooked