Qt如何根据另一个组合框中的选定选项设置组合框的值
问题描述:
我正试图构建一个需要从用户处获取各种输入的应用程序。输入选项根据所选的先前输入而有所不同。 事情是这样的:Qt如何根据另一个组合框中的选定选项设置组合框的值
因此,如果用户选择号码选择正确的组合框应该显示数值。
类似地,如果字母被选择它应该显示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:这只是一个样本设计所以我使用的是数字,字母作为例。请不要暗示用户界面的变化,以适应这个要求,因为这将超出我所做的范围。
编辑:根据以前的输入需要填充多个下拉列表;不只是两个。
答
您可以将第一个组合框的currentIndexChanged()信号连接到一个插槽,该插槽检查当前选择是“Numbers”还是“Alphabets”,并根据选定的内容为第二个实例化正确类型的QComboBox并取代它。
另一种选择是寿地方所有的QStackedWidget“命令”的各种组合框,然后在currentIndexChanged()
从第一个下拉框,你检查当前的选择是什么,并切换到QStackedWidget包含匹配命令组合框的页面。
第二种方法是否会在2个以上的下拉菜单中工作,即第三个下拉菜单需要使用前两个选择的值填充? –
我不明白为什么不。只需将第三个钩住第二个信号,检查两者的值,然后选择第三个的值。 –
另外,你可以详细说明如何实现第一个解决方案吗?我对Qt非常陌生,不熟悉插槽的概念。你的意思是使用Qt Creator底部的“信号和插槽编辑器”? –