QComboBox插件是一个集按钮和下拉菜单于一体的插件。

QComboBox在占用最小屏幕空间的情况下为用户提供一个下拉菜单选项。

QComboBox在显示当前选项的同时还弹出一系列可选择的项目。用户也可以编辑ComboBox。

ComboBox可以包含pixmap和字符串(insertItem和setItemText)。对于可编辑的ComboBox,clearEditText可以被用来清除用于显示的字符串而不改变ComboBox的内容。

当ComboBox的当前值改变时可以发出两个信号(currentIndexChanged和activated)。不管是否在程序中预先设定或存在用户交互,currentIndexChanged总会被激发,而activated只有在存在用户交互的时候才会被激发。highlighted信号当用户点亮comboBox下拉菜单时被激发。这三种信号都存在QString和int两个版本。如果用户选择或点击一个pixmap,只有int信号会被激发。当一个可编辑的combobox的出现改变的时候,editTextChanged信号就会被激发。

当用户往一个可编辑的combobox里输入一个新的字符串的时候,combobox插件可以将其插进去或不插进去,而且插件还可以把它插到很多位置。默认的规则是AtBottom,但也可以用setInsertPolicy改变规则。

可以通过QValidator来限制可编辑combobox的输入(setValidator)。默认情况下,所有出入都可以接受。

ComboBox可以用insertItem来添加项目。项目可以用setIemText来改变。一个项目可以用removeItem移除,所有项目可以用clear一起移除。当前项目的内容可以用currentText返回,数字项目的内容可以用text返回。当前项目可以用setCurrentIndex设置。comboBox项目数可以用count返回;项目数的最大值可以用setMaxCount来设置。可以用setEditable使项目可编辑。对于可编辑的combobox,可以用setCompleter来设置自动完成,用户是否可以添加副本可以用过setDuplicatesEnabled来设置。


QComboBox使用model/view架构来显示下拉列表和存储项目。默认情况下,QStandardItemModel存储项目,QLIstView子类显示下拉列表。用户可以访问model和view,但QComboBox也提供了函数来设置和取得数据(setItemData和itemText)。也可以设置一个新的model和view。对于combobox标签的文字和标志来说,使用了拥有Qt::DisplayRole和Qt::DecorationRole的model的数据。


QComboBox是QT GUI中的下拉列表框。


[cpp] view plain


1. class Q_GUI_EXPORT QComboBox : public QWidget  
3.     Q_OBJECT



常用方法和属性:

(1)addItems


void addItems ( const QStringList & texts )

在QComboBox的最后添加一项。

(2)count


int count () const

返回列表项总数。

(3)currentIndex


int currentIndex () const

当前显示的列表项序号。

(4)currentText


QString currentText () const

返回当前显示的文本。

(5)insertItem

void insertItem ( int index, const QString & text, const QVariant & userData = QVariant() )

void insertItem ( int index, const QIcon & icon, const QString & text, const QVariant & userData = QVariant() )

void insertItems ( int index, const QStringList & list )

插入一项或多项至序号index处。

(6)insertSeparator


void insertSeparator ( int index )

在序号为index的项前插入分隔线


(7)setItemText


void setItemText ( int index, const QString & text )

改变序号为index项的文本。

itemText
返回相应的组的文本
示例:

Window.h


[cpp] view plain


1. #ifndef __WINDOW_H__  
2. #define __WINDOW_H__  
4. #include <QMainWindow>  
5. #include <QPushButton>  
6. #include <QLineEdit>  
7. #include <QLayout>  
8. #include <QLabel>  
9. #include <QComboBox>  
10. #include <QMessageBox>  
11. #include <QDialog>  
14. class Window : public QMainWindow  
15. {  
16.     Q_OBJECT  
18. public:  
19.     Window(QWidget *parent = NULL):QMainWindow(parent)  
20.     {  
21. new QGridLayout;  
22.         gridLayout->setColumnStretch(0, 1);  
23.         gridLayout->setColumnStretch(1, 3);  
25.         gridLayout->setMargin(10);  
27. new QLabel(QWidget::tr("Sex:"));  
28. new QComboBox();  
30. "male"));  
31. "female"));  
32. "Insert item"));  
33.         cbo_sex->insertSeparator(2);  
35.         gridLayout->addWidget(lbl_caption, 0, 0);  
36.         gridLayout->addWidget(cbo_sex, 0, 1);  
38. new QHBoxLayout;  
39. new QPushButton(QWidget::tr("Select"));  
40.         bomLayout->addStretch();  
41.         bomLayout->addWidget(btn);  
42.         bomLayout->addStretch();  
44. new QVBoxLayout;  
45.         mainLayout->addLayout(gridLayout);  
46.         mainLayout->addLayout(bomLayout);  
48. new QWidget;  
49.         mainWidget->setLayout(mainLayout);  
51.         setCentralWidget(mainWidget);  
53. const QString &)), this, SLOT(on_sel_sex(const QString &)));  
54. this, SLOT(on_click_sel()));  
55.     }  
57. private:  
58.     QComboBox *cbo_sex;  
60. private slots:  
61. void on_sel_sex(const QString &text)  
62.     {  
63.         QString str;  
64. "You select " + text;  
65. this, tr("Info"), str);  
66.     }  
68. void on_click_sel()  
69.     {  
70.         QString str;  
71. "You select " + cbo_sex->currentText();  
72. this, tr("Info"), str);  
73.     }  
75. };  
78. #endif



main.cpp


[cpp] view plain


1. #include <QApplication>  
2. #include <QDialog>  
3. #include "Window.h"  
7. int main(int argc, char *argv[])  
9.     QApplication a(argc, argv);  
10. new Window;  
14.     mainWindow->resize(200, 100);  
15. "Qt Test"));  
16.     mainWindow->show();  
18. return a.exec();  
19. }


编译运行,界面如下:


python获取qt中下拉框中选中的值 qt 下拉选择框_可编辑


python获取qt中下拉框中选中的值 qt 下拉选择框_可编辑_02