QComboBox的用法

combobox 用法 [喝小酒的网摘]http://blog.const.net.cn/a/428.htm

一、如何添加/删除Combo Box内容

1. 在Combo Box控件属性的Data标签里面添加,一行表示Combo Box下拉列表中的一行。换行用ctrl+回车。
2. 在程序初始化时动态添加
    如: //控件内容初始化
   CString strTemp;
   ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->ResetContent();//消除现有所有内容
    for(int i=1;i<=100;i++)
   {
       strTemp.Format("%d",i);
       ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->AddString(strTemp);
   }
3. 下拉的时候添加
    如: CString strTemp;
    int iCount=((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetCount();//取得目前已经有的行数
    if(iCount<1)//防止重复多次添加
   {
       ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->ResetContent();
       for(int i=1;i<=100;i++)
      {
          strTemp.Format("%d",i);
          ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->AddString(strTemp);
       }
    }
4. 删除
   DeleteString( UINT nIndex )//删除指定行,
5. 插入
   InsertString( int nIndex, LPCTSTR lpszItem )//将行插入到指定位置
6. 查找
   FindString( int nStartAfter, LPCTSTR lpszItem )//可以在当前所有行中查找指定的字符传的位置,nStartAfter指明从那一行开始进行查找。
   int SelectString( int nStartAfter, LPCTSTR lpszItem )//可以选中包含指定字符串的行

二、如何控制Combo Box的下拉长度

1. 首先要知道两点:一、那就是在设计界面里,点击一下Combo Box的下拉箭头,此时出现的调整框就是Combo Box的下拉调整框。
2. 二、属性里有个 No integral height 钩选项,表示最大长度为设计长度,如果实际内容比设计长度多,就出现滚动条,少就以实际长度显示。

三、选择其中的某行
1. 选中:
int iPos=((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetCurSel();//当前选中的行。
2. 设置
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->SetCurSel(n)//设置第n行内容为显示的内容。

四、取得Combo Box框内容
1. 取当前内容
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetWindowText(strTemp);

2. 取其他行内容
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetLBText(n,strTemp);

四、获得焦点

通常要判断控件是否获得了焦点,可以用GetFocus()函数

例如:if(GetFocus()==GetDlgItem(IDC_EDIT_VALUE2))//判断焦点是否在编辑框IDC_EDIT_VALUE2内。

但是combobox 的焦点不同,因为它是由edit和listbox两部分组成的

所以获得焦点要用GetParent():if ((GetFocus()->GetParent())==GetDlgItem(IDC_COMBO_CF))


1、改变下拉框大小:先点向下的箭头,就可以调整下拉框大小

2、如果 ComboBox 的 Sorted 属性设置为 true,
   则新添加项将按字母顺序插入到列表中。
   否则,在列表的结尾处插入项。

3、要立即响应选择框的改变(即选择框一改变选项,就立刻将结果传递进去)!
   响应他的哪个消息比较好?

   如果是只能选择的响应ON_CBN_SELCHANGE
   如果是可以编辑的,那么要立刻响应编辑就是ON_CBN_EDITCHANGE

4、CBN_SELENDOK是什么作用?
   This notification message is sent when the user clicks a list item,
   or selects an item and then closes the list.
   It indicates the user's selection is to be processed

5、介绍一下列表框几种常用的消息映射宏:

   ON_CBN_DBLCLK 鼠标双击
   ON_CBN_DROPDOWN 列表框被弹出
   ON_CBN_KILLFOCUS / ON_CBN_SETFOCUS 在输入框失去/得到输入焦点时产生
   ON_CBN_SELCHANGE 列表框中选择的行发生改变
   ON_CBN_EDITUPDATE 输入框中内容被更新
   使用以上几种消息映射的方法为定义原型如:afx_msg void memberFxn( );的函数,
   并且定义形式如ON_Notification( id, memberFxn )的消息映射。
   如果在对话框中使用组合框,Class Wizard会自动列出相关的消息,并能自动产生消息映射代码。

6、改变ComboBox的下拉列表框宽度
   一般情况下,列表框的宽度和选择框是一样宽的,为了让列表框变的更宽,可以用
   m_Combobox.setdroppedwidth(int width); 来调整 他的宽度

7、如何使控键ComboBox不能输入只能在下拉菜单中选择?
   VC6中style属性设为csDropDownList
   VC2005中Type属性设为Drop List

8、设置当前项或得到当前是第几项
   
   m_ComboBox1.SetCurSel(N);    //SetCurSel函数可改变标签控件当前选定的项目
    //这个N可以是-1,表示无选择,0表示第一项,1表示第二项。。
   m_ComboBox1.GetCurSel();     //得到当前是第几项.0是第一项,1是第二项
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QComboBox 是 Qt 中的一个组件,它提供了一个下拉列表框,用户可以在其中选择一个选项。 使用 QComboBox 的一般步骤如下: 1. 创建 QComboBox 实例: ```python combo_box = QComboBox() ``` 2. 添加选项: ```python combo_box.addItem("选项1") combo_box.addItem("选项2") combo_box.addItem("选项3") ``` 或者使用列表一次添加多个选项: ```python combo_box.addItems(["选项1", "选项2", "选项3"]) ``` 3. 获取当前选中的选项: ```python selected_option = combo_box.currentText() ``` 4. 设置当前选中的选项: ```python combo_box.setCurrentIndex(index) ``` 其中 index 是选项在下拉列表中的索引,从 0 开始计数。 完整的示例代码如下: ```python from PyQt5.QtWidgets import QApplication, QMainWindow, QComboBox class MyWindow(QMainWindow): def __init__(self): super().__init__() combo_box = QComboBox(self) combo_box.addItem("选项1") combo_box.addItem("选项2") combo_box.addItem("选项3") combo_box.move(50, 50) combo_box.currentIndexChanged.connect(self.on_combo_box_index_changed) def on_combo_box_index_changed(self, index): selected_option = self.sender().currentText() print(f"当前选中的选项是: {selected_option}") if __name__ == "__main__": app = QApplication([]) window = MyWindow() window.show() app.exec_() ``` 在这个例子中,我们创建了一个 QComboBox 实例,并添加了三个选项。当用户选择某个选项时,会触发 `currentIndexChanged` 信号,我们在 `on_combo_box_index_changed` 方法中处理这个信号,并获取当前选中的选项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值