我正在尝试构建一个需要从用户那里获得各种输入的应用程序。输入选择取决于所选的先前输入。 像这样:
因此,如果用户选择数字选项,则右组合框应显示数值。
同样,如果选择Alphabet,它应该显示A,B,C等
所以我需要列表对所有下拉动态都是动态的。我该怎么做?
我正在使用 Qt Creator 进行上述操作。下面是第一个组合框的.ui文件的代码:
widget class="QGroupBox" name="gbType">
<property name="geometry">
<rect>
<x>60</x>
<y>100</y>
<width>281</width>
<height>81</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true">border: 1px solid gray;</string>
</property>
<property name="title">
<string extracomment="Type"/>
</property>
<widget class="QComboBox" name="cbType">
<property name="geometry">
<rect>
<x>20</x>
<y>30</y>
<width>241</width>
<height>27</height>
</rect>
</property>
<property name="editable">
<bool>true</bool>
</property>
<item>
<property name="text">
<string>Number</string>
</property>
</item>
<item>
<property name="text">
<string>Alphabet</string>
</property>
</item>
</widget>
</widget>
对于第二个组合框:
<widget class="QGroupBox" name="gbCommand">
<property name="geometry">
<rect>
<x>450</x>
<y>100</y>
<width>281</width>
<height>81</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true">border: 1px solid gray;</string>
</property>
<property name="title">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="flat">
<bool>true</bool>
</property>
<property name="checkable">
<bool>false</bool>
</property>
<widget class="QComboBox" name="cbCommand">
<property name="geometry">
<rect>
<x>20</x>
<y>30</y>
<width>241</width>
<height>27</height>
</rect>
</property>
<property name="editable">
<bool>true</bool>
</property>
<property name="currentText">
<string/>
</property>
<item>
<property name="text">
<string>1</string>
</property>
</item>
<item>
<property name="text">
<string>2</string>
</property>
</item>
<item>
<property name="text">
<string>3</string>
</property>
</item>
</widget>
</widget>
PS:这只是一个示例设计,因此我使用Numbers,Alphabets作为示例。请不要建议更改UI以满足要求,因为这将超出我的工作范围。
编辑:需要根据以前的输入填充多个下拉列表;不只是两个。
答案 0 :(得分:4)
您可以将第一个组合框的currentIndexChanged()信号连接到一个插槽,该插槽检查当前选择是“Numbers”还是“Alphabets”,并根据所选内容为第二个组合实例化一个正确类型的QComboBox,替换它。
另一种选择是将所有各种组合框放入QStackedWidget中的“Command”,然后从第一个组合框currentIndexChanged()
放置当前选择的内容,并将QStackedWidget切换到包含匹配命令组合框的页面