下拉框是一个组合控件(包含一个文本显示控件和一个按钮)。
一、设计器编辑
二、信号函数
- void editTextChanged(const QString &); 只有用户编辑时,内容改变时触发。
- void activated(int index); 用户选中下拉列表某一项触发,编辑和代码改变索引时不会触发。
- void activated(const QString &);
- void highlighted(int index); 高亮时被触发,就是鼠标移动到某个下拉项时。
- void highlighted(const QString &);
- void currentIndexChanged(int index); 改变当前索引触发,包括代码里设置索引
- void currentIndexChanged(const QString &);
- void currentTextChanged(const QString &);改变当前编辑框内容和选择下拉框选项时触发
三、常用操作
1. 增加
- void addItem(const QString &text, const QVariant &userData = QVariant()); //一次添加一个下拉项,默认在尾部添加。
- void addItem(const QIcon &icon, const QString &text,const QVariant &userData = QVariant());一次添加一个下拉项,且带有图标,默认在尾部添加。
- void addItems(const QStringList &texts);一次添加多个下拉项
2. 删除
- void removeItem(int index); 删除指定索引的下拉项。
- void clear(); 清除当前编辑框内容和所有下拉列表项。
- void clearEditText(); 清除当前编辑框内容,但是不清除下拉选项列表。
3. 插入
- 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 &texts);
4. 其他常用方法
-
int currentIndex() const; 返回当前索引
-
QString currentText() const; 返回当前文本
-
QVariant currentData(int role = Qt::UserRole) const; 返回当前用户自定义数据
-
QString itemText(int index) const;返回当前索引对应的文本
-
QIcon itemIcon(int index) const; 返回当前索引对应的图标
-
QVariant itemData(int index, int role = Qt::UserRole) const; 返回当前索引对应的用户自定义数据
Qt QVariant详细用法参考博客:Qt QVariant详细用法
5.完整代码演示
struct MyType
{
int x = 0;
int y = 0;
};
Q_DECLARE_METATYPE(MyType) //注册,必不可少
QtWidgetsApplication1::QtWidgetsApplication1(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
ui.comboBox->clear(); //清除编辑编辑框和和下拉列表的数据
QVariant var;
MyType myType;
myType.x = 250;
var.setValue(myType);
ui.comboBox->addItem("ComboBox001",var);
ui.comboBox->addItem("ComboBox002");
ui.comboBox->addItem(QIcon(":/QtWidgetsApplication1/Resources/timg.gif"), "ComboBox003");
QStringList list = { "ComboBox004","ComboBox005" };
ui.comboBox->addItems(list);
ui.comboBox->insertItem(1, "Insert");
void (QComboBox::*p)(const QString &) = &QComboBox::highlighted;
connect(ui.comboBox, p, [=](const QString &text) {
//QVariant var = ui.comboBox->itemData(index);
访问用户自定义数据
//qDebug() << var.value<MyType>().x << endl;
//qDebug() << ui.comboBox->currentText() << endl;
qDebug() << text << endl;
});
}