QComboBox主要的功能是提供一个下拉列表供选择输入。
count : const int
currentData : const QVariant
currentIndex : int
currentText : QString
duplicatesEnabled : bool
editable : bool
frame : bool
iconSize : QSize
insertPolicy : InsertPolicy
maxVisibleItems : int
minimumContentsLength : int
modelColumn : int
sizeAdjustPolicy : SizeAdjustPolicy
是否可以编辑。
当前的文本信息。
当前显示的项目的序列号。
最大可以显示的项。
最大保存的数目。
此属性保存用于确定用户插入的项目应出现在组合框中的位置的策略。默认值为 InsertAtBottom,表示新项目将出现在项目列表的底部。
InsertPolicy值的描述:
Constant | Value | Description |
---|---|---|
QComboBox::NoInsert | 0 | 该字符串不会插入到组合框中。 |
QComboBox::InsertAtTop | 1 | 该字符串将作为组合框中的第一项插入。 |
QComboBox::InsertAtCurrent | 2 | 当前项目将被字符串替换。 |
QComboBox::InsertAtBottom | 3 | 字符串将插入到最后一项之后 |
QComboBox::InsertAfterCurrent | 4 | 该字符串插入在组合框中的当前项目之后。 |
QComboBox::InsertBeforeCurrent | 5 | 该字符串插入在组合框中的当前项目之前。 |
QComboBox::InsertAlphabetically | 6 | 该字符串按字母顺序插入组合框中。 |
此属性包含描述内容更改时组合框大小如何更改的策略。默认值为 AdjustToContentsOnFirstShow。
Constant | Value | Description |
---|---|---|
QComboBox::AdjustToContents | 0 | 组合框将始终根据内容进行调整 |
QComboBox::AdjustToContentsOnFirstShow | 1 | 组合框将在第一次显示时调整其内容。 |
QComboBox::AdjustToMinimumContentsLength | 2 | 改用 AdjustToContents 或 AdjustToContentsOnFirstShow。 |
QComboBox::AdjustToMinimumContentsLengthWithIcon | 3 | 组合框将调整为 minimumContentsLength 加上图标的空间。 |
此属性包含应适合组合框的最小字符数。默认值为 0。如果将此属性设置为正值,则 minimumSizeHint() 和 sizeHint() 会将其考虑在内。
此属性保存组合框中显示的图标的大小。除非明确设置,否则将返回当前样式的默认值。此大小是图标可以具有的最大大小;较小尺寸的图标不会放大。
此属性保存用户是否可以将重复项输入组合框 请注意,始终可以以编程方式将重复项插入组合框。默认情况下,此属性为 false(不允许重复)。
此属性保存组合框是否使用框架绘制自身 如果启用(默认)组合框在框架内绘制自身,否则组合框在没有任何框架的情况下绘制自身。
此属性保存模型中可见的列。如果在填充组合框之前设置,则弹出视图不会受到影响,将显示第一列(使用此属性的默认值)。默认情况下,此属性的值为 0。
void addItem
{ //"初始化列表"按钮
QIcon icon;
icon.addFile(":/images/icons/aim.ico");
ui->comboBox->clear();
for (int i=0;i<20;i++)
ui->comboBox->addItem(icon,QString::asprintf("Item %d",i)); //带图标
// ui->comboBox->addItem(QString::asprintf("Item %d",i)); //不带图标
}
如果只是添加字符串列表项,而且数据来源于一个QStringList变量,可以使用addItems()函数,示例代码如下:
ui->comboBox->clear();
QStringList strList;
strList<<"北京"<<"上海"<<"天津"<<"河北省"<<"山东省"<<"山西省";
ui->comboBox->addItems(strList);
添加具有用户数据的项:
QComboBox::addItem()函数的两种参数的原型定义如下:
void addItem (const QString &text, const QVariant &userData = QVariant())
void addItem (const QIcon &icon, const QString &text, const QVariant &userData = QVariant())
不管是哪一个addItem()函数,后面都有一个可选的QVariant类型的参数userData,可以利用这个变量存储用户定义数据。
void Widget::on_btnIni2_clicked()
{//初始化具有自定义数据的ComboBox
QMap<QString, int> City_Zone;
City_Zone.insert("北京",10);
City_Zone.insert("上海",21);
City_Zone.insert("天津",22);
City_Zone.insert("大连",411);
City_Zone.insert("锦州",416);
City_Zone.insert("徐州",516);
City_Zone.insert("福州",591);
City_Zone.insert("青岛",532);
ui->comboBox2->clear();
foreach(const QString &str,City_Zone.keys())
ui->comboBox2->addItem(str,City_Zone.value(str));
}
QComboBox存储的项是一个列表,但是QComboBox不提供整个列表用于访问,可以通过索引访问某个项。访问项的一些函数主要有以下几种。
返回当前项的序号,第一个项的序号为0。
返回当前项的文字。
返回当前项的关联数据,数据的缺省角色为role = Qt::UserRole,角色的意义在5.1节详细介绍。
返回指定索引号的项的文字。
返回指定索引号的项的关联数据。
返回项的个数。
void currentIndexChanged(int index)
void currentIndexChanged(const QString &text)