Russian Qt Forum

Qt => Кладовая готовых решений => Тема начата: gil9red от Август 14, 2013, 07:42



Название: UFoldoutGroupBox
Отправлено: gil9red от Август 14, 2013, 07:42
Group box с возможностью сворачивания/разворачивания своего содержимого :)
Вобщем, стандартный QGroupBox :)
Код архипростенький, благодаря чему легко разобрать код и расширить его :)

Код:
class UFoldoutGroupBox: public QGroupBox
{
    Q_OBJECT

public:
    UFoldoutGroupBox(QWidget *parent = 0)
        : QGroupBox(parent)
    {
        setCheckable(true);
        setChecked(true);
        setExpanded(true);

        connect(this, SIGNAL(toggled(bool)), SLOT(setExpanded(bool)));
    }

public slots:
    void setExpanded(bool expanded)
    {
        setFlat(!expanded);

        foreach(QWidget *child, findChildren <QWidget *> ())
            child->setVisible(expanded);
    }
};

UPD Исправил на setExpanded  ;D


Название: Re: UFoldoutGroupBox
Отправлено: Bepec от Август 14, 2013, 08:47
Нормальное решение, только checkbox скачет :)


Название: Re: UFoldoutGroupBox
Отправлено: kambala от Август 14, 2013, 10:13
слот правильнее назвать setExpanded.

в КДЕ есть штука поинтереснее, называется KExpandableGroupBox ;)


Название: Re: UFoldoutGroupBox
Отправлено: Bepec от Август 14, 2013, 10:24
Kambala покажите? КДЕ в глаза не видел ^.^


Название: Re: UFoldoutGroupBox
Отправлено: kambala от Август 14, 2013, 12:18
http://bit.ly/19hopoN


Название: Re: UFoldoutGroupBox
Отправлено: Bepec от Август 14, 2013, 12:46
Очень приятно получить результаты по запросу "Expandable GroupBox". Мб чуть внимательнее станем друг к другу и не будем посылать в неверный поиск? :)

Очень много говорит поиск - всего три картинки :D и 3 страницы результатов исходников.

<sarcasm>
Неужели так трудно кинуть ссылку на какую-либо известную вам картинку, которую вы найдетё за пару секунд?
Очень информативно, но я единственно не понял - где же он? :P
</sarcasm>

https://www.google.com/search?btnG=1&pws=0&q=KExpandableGroupBox#bav=on.2,or.r_cp.r_qf.&ei=EVELUryGNoa74ASoz4DIAw&fp=952502cd83beaefa&nfpr=1&pws=0&q=KExpandableGroupBox&sa=X&ved=0CCkQvgUoAQ
https://www.google.com/search?q=KExpandableGroupBox&pws=0&nfpr=1&source=lnms&tbm=isch&sa=X&ei=RlELUsmuO4jh4QS9hYDYBw&ved=0CAcQ_AUoAQ&biw=1920&bih=1075

PS вполне вероятно, что он на первой картинке - тупо groupBox с убранной рамочкой?


Название: Re: UFoldoutGroupBox
Отправлено: kambala от Август 14, 2013, 13:13
я ж тебе имя класса написал, там (в моем гугле) почти все ссылки ведут на репозитории с кодом. выкладываю картинку из своего приложения (правда я слегка подпилил класс):


Название: Re: UFoldoutGroupBox
Отправлено: Bepec от Август 14, 2013, 13:25
Мне картинку надо было. А код то найдётся :)

Ну да, обычный чекбокс с чуть изменённой отрисовкой :)


Название: Re: UFoldoutGroupBox
Отправлено: gil9red от Август 15, 2013, 09:06
Поиграл немного с стилями, и получилось немного улучшить :)

Код:
 QGroupBox {
     border-radius: 10px;
 }

QGroupBox::title {
     subcontrol-origin: margin;
     subcontrol-position: top center; /* помещаем вверху по центру */
     padding: 0 3px;
 }

QGroupBox::indicator {
     width: 9px;
     height: 9px;
 }

 QGroupBox::indicator:unchecked {
     image: url(:/resource/close.png);
 }

 QGroupBox::indicator:checked {
     image: url(:/resource/open.png);
 }


Название: Re: UFoldoutGroupBox
Отправлено: gil9red от Август 15, 2013, 09:07
Подскажите, как содержимое groupbox'а немного вниз опустить )


Название: Re: UFoldoutGroupBox
Отправлено: Bepec от Август 15, 2013, 10:30
Поля установи сверху в Layout'e


Название: Re: UFoldoutGroupBox
Отправлено: Akon от Август 15, 2013, 21:03
При вызове setVisible надо бы запоминать видимые контролы, а то при разворачивании невидимые станут видимыми.