c++ - Qt - How to change the size of QRadiobutton while the size of window is changing -


i trying let size of qradiobutton change size of window. need when adjusting size of window become bigger (or smaller), qradiobutton should adjust become bigger (or smaller).

i tried use method used qpushbutton, found doesn't work (check pic1 , pic2 @ bottom). size of qradiobutton stays same.

besides, i've tried setstylesheet qradiobutton, clicking on picture invalid, not result want (clicking on picture should valid in case). know how should modify code. thanks!

here of related code:

.h file

qradiobutton *funcsourceorientedbutton; qpushbutton *funclockbutton; 

.cpp file

qpixmap pixmap(":/images/function/sourceoriented.png"); qicon buttonicon(pixmap); funcsourceorientedbutton->seticon(buttonicon); funcsourceorientedbutton->seticonsize(function_oriented_button_size); funcsourceorientedbutton->setminimumsize(function_oriented_button_size); funcsourceorientedbutton->setsizepolicy(qsizepolicy::expanding, qsizepolicy::expanding);  funclockbutton->setstylesheet("border-image: url(:/images/function/wlock.png);"); funclockbutton->setminimumsize(function_button_size); funclockbutton->setsizepolicy(qsizepolicy::expanding, qsizepolicy::expanding); 

here pics:

pic1

enter image description here

pic2

enter image description here

you need create layout , add buttons it

mywidget.h

#ifndef mywidget_h #define mywidget_h  #include <qwidget>  class qradiobutton; class mywidget : public qwidget {     q_object  public:     mywidget(qwidget *parent = 0);     ~mywidget();      bool eventfilter(qobject *obj, qevent *event);  private:     qsize __calculateindicatorsize(const qsize & radiobtnsize); private:     qradiobutton * m_radiobtn1;     qradiobutton * m_radiobtn2;      qstring styleforbutton_;     qstring styleforindicator_; };  #endif // mywidget_h 

mywidget.cpp

#include "mywidget.h" #include <qhboxlayout> #include <qpushbutton> #include <qradiobutton> #include <qevent> mywidget::mywidget(qwidget *parent)     : qwidget(parent) {     styleforbutton_ = "qradiobutton{border-width: 10 10 10 10; border-image: url(c:/users/phamat/desktop/bg.png) 10 10 10 10;}";     styleforindicator_ = "qradiobutton::indicator{width: %1px; height: %2px;}";      qhboxlayout * layout = new qhboxlayout();     layout->setcontentsmargins(20, 20, 20, 20);     layout->setspacing(20);     setlayout(layout);      m_radiobtn1 = new qradiobutton(this);     m_radiobtn1->settext("radio button 1");     m_radiobtn1->setsizepolicy(qsizepolicy::expanding, qsizepolicy::expanding);     m_radiobtn1->setstylesheet(styleforbutton_);     m_radiobtn1->installeventfilter(this);     layout->addwidget(m_radiobtn1);      m_radiobtn2 = new qradiobutton(this);     m_radiobtn2->settext("radio button 2");     m_radiobtn2->setsizepolicy(qsizepolicy::expanding, qsizepolicy::expanding);     m_radiobtn2->setstylesheet(styleforbutton_);     m_radiobtn2->installeventfilter(this);     layout->addwidget(m_radiobtn2); }  mywidget::~mywidget() { }  bool mywidget::eventfilter(qobject *obj, qevent *event) {     if (obj == m_radiobtn1)     {         if (event->type() == qevent::resize)         {             qsize size = __calculateindicatorsize(m_radiobtn1->size());             m_radiobtn1->setstylesheet(styleforbutton_ + styleforindicator_.arg(size.width()).arg(size.height()));         }     }     else if (obj == m_radiobtn2)     {         if (event->type() == qevent::resize)         {             qsize size = __calculateindicatorsize(m_radiobtn2->size());             m_radiobtn2->setstylesheet(styleforbutton_ + styleforindicator_.arg(size.width()).arg(size.height()));         }     }     return qwidget::eventfilter(obj, event); }   qsize mywidget::__calculateindicatorsize(const qsize & radiobtnsize) {     if (radiobtnsize.width() > 300)     {         return qsize(20, 20);     }     else if (radiobtnsize.width() > 200)     {         return qsize(15, 15);     }     else     {         return qsize(10, 10);     } } 

pic 1

pic 2


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -