[Qt-interest] Using QStyleSheet to Restyle Checkable Menu Items

Scott Aron Bloom Scott.Bloom at onshorecs.com
Fri Sep 17 18:51:09 CEST 2010


Ive never done qstylesheets without an image.. it really does make life
easier...

AS to the QRC, IMO, its one of the top 5 new things to learn for Qt3 to
4 transitions.. It makes resource reployment so much easier...

If youre not using QMake, you will just have to call the qrc compiler to
generate the C++ code from the .qrc file.

Scott

-----Original Message-----
From: qt-interest-bounces at trolltech.com
[mailto:qt-interest-bounces at trolltech.com] On Behalf Of Jake Colman
Sent: Friday, September 17, 2010 9:46 AM
To: qt-interest at trolltech.com
Subject: Re: [Qt-interest] Using QStyleSheet to Restyle Checkable Menu
Items


Scott,

Great information, thanks!

Is there a way to do this without images?  If not, how would I do this
if I am not using a .qrc file or qmake to build my application?  A
pointer to the relevant doc would suffice if this is a stupid question.

...Jake


>>>>> "SAB" == Scott Aron Bloom <Scott.Bloom at onshorecs.com> writes:

   SAB> After some further investigation... the stylesheet example has a
   SAB> checkbox modification example... Here is the relevant code from
   SAB> the stylesheet.

   SAB> QMenu::indicator {
   SAB>     width: 13px;
   SAB>     height: 13px;
   SAB> }

   SAB> QMenu::indicator:unchecked {
   SAB>     image: url(:/images/checkbox_unchecked.png);
   SAB> }

   SAB> QMenu::indicator:unchecked:hover {
   SAB>     image: url(:/images/checkbox_unchecked_hover.png);
   SAB> }

   SAB> QMenu::indicator:unchecked:pressed {
   SAB>     image: url(:/images/checkbox_unchecked_pressed.png);
   SAB> }

   SAB> QMenu::indicator:checked {
   SAB>     image: url(:/images/checkbox_checked.png);
   SAB> }

   SAB> QMenu::indicator:checked:hover {
   SAB>     image: url(:/images/checkbox_checked_hover.png);
   SAB> }

   SAB> QMenu::indicator:checked:pressed {
   SAB>     image: url(:/images/checkbox_checked_pressed.png);
   SAB> }

   SAB> Create a string containing that information (the size needs to
   SAB> be bigger to look good in the QMenu) create your images and put
   SAB> them in your .qrc file), then call qApp->setStyleSheet

   SAB> The 

   SAB> -----Original Message-----
   SAB> From: qt-interest-bounces at trolltech.com
   SAB> [mailto:qt-interest-bounces at trolltech.com] On Behalf Of Scott
Aron Bloom
   SAB> Sent: Friday, September 17, 2010 7:43 AM
   SAB> To: qt-interest at trolltech.com
   SAB> Subject: Re: [Qt-interest] Using QStyleSheet to Restyle
Checkable Menu
   SAB> Items

   SAB> First, I would play in the Designer, and use the "setStyleSheet"
to get
   SAB> it to work...
http://doc.trolltech.com/4.6/stylesheet-designer.html

   SAB> For a QMenu, you need to modify the ::indicator subcontrol
   SAB>
http://doc.trolltech.com/4.6/stylesheet-reference.html#list-of-sub-contr
   SAB> ols

   SAB> I would recommend, you have a checked and unchecked image
(rather than
   SAB> custom painting), so you would be modifying the :checked and
non-checked
   SAB> states of the menu.

   SAB> I would also look at the setStyleSHeet example that comes with
Qt

   SAB> Scott
   SAB> -----Original Message-----
   SAB> From: qt-interest-bounces at trolltech.com
   SAB> [mailto:qt-interest-bounces at trolltech.com] On Behalf Of Jake
Colman
   SAB> Sent: Friday, September 17, 2010 5:26 AM
   SAB> To: qt-interest at trolltech.com
   SAB> Subject: [Qt-interest] Using QStyleSheet to Restyle Checkable
Menu Items

   SAB> I would like to restyle checkable menu items so that they
display a
   SAB> small checkbox that is red when checked and clear when
unchecked.  With
   SAB> Qt3 I used a QCustomMenuItem and a derived paint() method to
precisely
   SAB> render the size of the checkbox and the desired behavior.  With
Qt4 it
   SAB> appears that QStyleSheet is the way to go is ::indicator
subcontrol.
   SAB> But, although I have reviewed the relevant docs I am stymied as
to how
   SAB> to do this.  Can someone help me get started with something that
   SAB> approximates what I am looking to do?

   SAB> Thanks.

   SAB> ...Jake

   SAB> -- 
   SAB> Jake Colman | Director, Software Development
   SAB> Principia Partners LLC
   SAB> 101 West Elm Street | Conshohocken | PA 19428 | +1 (610) 755
9770
   SAB> t: +1 (610) 755 9786 | c: +1 (610) 348 2788 | f: +1 (201) 221
8929
   SAB> e: colman at ppllc.com | w: www.principiapartners.com
   SAB> Credit technology innovation awards winner 2008 and 2009

   SAB> _______________________________________________
   SAB> Qt-interest mailing list
   SAB> Qt-interest at trolltech.com
   SAB> http://lists.trolltech.com/mailman/listinfo/qt-interest

   SAB> _______________________________________________
   SAB> Qt-interest mailing list
   SAB> Qt-interest at trolltech.com
   SAB> http://lists.trolltech.com/mailman/listinfo/qt-interest

-- 
Jake Colman | Director, Software Development
Principia Partners LLC
101 West Elm Street | Conshohocken | PA 19428 | +1 (610) 755 9770
t: +1 (610) 755 9786 | c: +1 (610) 348 2788 | f: +1 (201) 221 8929
e: colman at ppllc.com | w: www.principiapartners.com
Credit technology innovation awards winner 2008 and 2009

_______________________________________________
Qt-interest mailing list
Qt-interest at trolltech.com
http://lists.trolltech.com/mailman/listinfo/qt-interest




More information about the Qt-interest-old mailing list