2016-12-06 3 views
0

Я хотел бы достичь что-то похожее на эту картину:Вложенные структуры с QRadioButtons

enter image description here

за исключением того, что верхний уровень («Адрес бар», «формы» и «Имена пользователей ...») должны быть радиокнопками.

Идея заключается в том, что подуровни должны включаться или выключаться в зависимости от состояния радиообъектов. И подуровни должны быть смещены вправо, как на картинке.

Можно ли это сделать Qt элегантным способом?

ответ

0

Я бы сказал, что простой QVBoxLayout для верхнего уровня, и каждый «подуровень» имеет QHBoxLayout с фиксированным размером проставки в качестве первого ребенка и QVBoxLayout, содержащий дополнительные опции.

Отключение всех вспомогательных параметров может быть просто выполнено путем отключения виджета «подуровень».

0

Просто поместите эти подпункты (например, «История просмотра», «Избранное», ...) в разделенном QWidget и подключить QWidget::setEnabled() слот, который виджета с «адресной строке» QAbstractButton::toggled() радиосигнал-кнопки.

Это .ui файл дизайнер Qt (с рабочим соединения сигнал-слот, попробуйте Ctrl +R в Designer), который демонстрирует идею:

<?xml version="1.0" encoding="UTF-8"?> 
<ui version="4.0"> 
<class>Form</class> 
<widget class="QWidget" name="Form"> 
    <property name="geometry"> 
    <rect> 
    <x>0</x> 
    <y>0</y> 
    <width>170</width> 
    <height>178</height> 
    </rect> 
    </property> 
    <property name="windowTitle"> 
    <string>Form</string> 
    </property> 
    <layout class="QVBoxLayout" name="verticalLayout"> 
    <item> 
    <widget class="QRadioButton" name="radioButton"> 
    <property name="text"> 
     <string>RadioButton</string> 
    </property> 
    <property name="checked"> 
     <bool>true</bool> 
    </property> 
    </widget> 
    </item> 
    <item> 
    <widget class="QWidget" name="widget" native="true"> 
    <layout class="QVBoxLayout" name="verticalLayout_2"> 
     <item> 
     <widget class="QCheckBox" name="checkBox"> 
     <property name="text"> 
     <string>CheckBox</string> 
     </property> 
     </widget> 
     </item> 
     <item> 
     <widget class="QCheckBox" name="checkBox_2"> 
     <property name="text"> 
     <string>CheckBox</string> 
     </property> 
     </widget> 
     </item> 
     <item> 
     <widget class="QCheckBox" name="checkBox_3"> 
     <property name="text"> 
     <string>CheckBox</string> 
     </property> 
     </widget> 
     </item> 
    </layout> 
    </widget> 
    </item> 
    <item> 
    <widget class="QRadioButton" name="radioButton_2"> 
    <property name="text"> 
     <string>RadioButton</string> 
    </property> 
    </widget> 
    </item> 
    <item> 
    <widget class="QRadioButton" name="radioButton_3"> 
    <property name="text"> 
     <string>RadioButton</string> 
    </property> 
    </widget> 
    </item> 
    </layout> 
</widget> 
<resources/> 
<connections> 
    <connection> 
    <sender>radioButton</sender> 
    <signal>toggled(bool)</signal> 
    <receiver>widget</receiver> 
    <slot>setEnabled(bool)</slot> 
    <hints> 
    <hint type="sourcelabel"> 
    <x>84</x> 
    <y>17</y> 
    </hint> 
    <hint type="destinationlabel"> 
    <x>84</x> 
    <y>77</y> 
    </hint> 
    </hints> 
    </connection> 
</connections> 
</ui> 
Смежные вопросы