QT-ComboBox

一、QComboBox

The QComboBox widget is a combined button and popup list.(来源:官网)

QComboBox部件由一个按钮和弹出列表组成

二、常用函数

函数返回值函数
voidaddItem(const QString &text, const QVariant &userData = QVariant())
voidaddItem(const QIcon &icon, const QString &text, const QVariant &userData = QVariant())
voidaddItems(const QStringList &texts)
QCompleter *completer() const
intcount() const
QVariantcurrentData(int role = Qt::UserRole) const
intcurrentIndex() const
QStringcurrentText() const
boolduplicatesEnabled() const
intfindData(const QVariant &data, int role = Qt::UserRole, Qt::MatchFlags flags = static_cast<Qt::MatchFlags> ( Qt::MatchExactly | Qt::MatchCaseSensitive )) const
intfindText(const QString &text, Qt::MatchFlags flags = static_cast<Qt::MatchFlags> ( Qt::MatchExactly | Qt::MatchCaseSensitive )) const
boolhasFrame() const
virtual voidhidePopup()
QSizeiconSize() const
voidinsertItem(int index, const QString &text, const QVariant &userData = QVariant())
voidinsertItem(int index, const QIcon &icon, const QString &text, const QVariant &userData = QVariant())
voidinsertItems(int index, const QStringList &list)
InsertPolicyinsertPolicy() const
voidinsertSeparator(int index)
boolisEditable() const
QVariantitemData(int index, int role = Qt::UserRole) const
QAbstractItemDelegate *itemDelegate() const
QIconitemIcon(int index) const
QStringitemText(int index) const
QLineEdit *lineEdit() const
intmaxCount() const
intmaxVisibleItems() const
intminimumContentsLength() const
QAbstractItemModel *model() const
intmodelColumn() const
voidremoveItem(int index)
QModelIndexrootModelIndex() const
voidsetCompleter(QCompleter *completer)
voidsetDuplicatesEnabled(bool enable)
voidsetEditable(bool editable)
voidsetFrame(bool)
voidsetIconSize(const QSize &size)
voidsetInsertPolicy(InsertPolicy policy)
voidsetItemData(int index, const QVariant &value, int role = Qt::UserRole)
voidsetItemDelegate(QAbstractItemDelegate *delegate)
voidsetItemIcon(int index, const QIcon &icon)
voidsetItemText(int index, const QString &text)
voidsetLineEdit(QLineEdit *edit)
voidsetMaxCount(int max)
voidsetMaxVisibleItems(int maxItems)
voidsetMinimumContentsLength(int characters)
voidsetModel(QAbstractItemModel *model)
voidsetModelColumn(int visibleColumn)
voidsetRootModelIndex(const QModelIndex &index)
voidsetSizeAdjustPolicy(SizeAdjustPolicy policy)
voidsetValidator(const QValidator *validator)
voidsetView(QAbstractItemView *itemView)
virtual voidshowPopup()
SizeAdjustPolicysizeAdjustPolicy() const
const QValidator *validator() const
QAbstractItemView *view() const

三、常用函数解释

添加数据(带图片)

源码

// 添加图片
QIcon icon("F:/qiangu/qtnull/Null/ICON/icon.jpg");
ui->comboBox->addItem(icon, QString("First"));
ui->comboBox->addItem(icon, QString("Second"));
ui->comboBox->addItem(icon, QString("Third"));
ui->comboBox->addItem(icon, QString("Four"));

// 批量添加
QStringList strList;
ui->comboBox->addItems(strList);

允许编辑、不可编辑、文字居中(下拉框和按钮文字)

源码

QLineEdit *lineEdit = new QLineEdit();
lineEdit->setReadOnly(true);  //仅查看
//lineEdit->setEnabled(true); //可编辑
lineEdit->setAlignment(Qt::AlignCenter);
ui->comboBox->setLineEdit(lineEdit);

for (int i = 0; i < ui->comboBox->count(); ++i) 
{
	ui->comboBox->setItemData(i, Qt::AlignCenter, Qt::TextAlignmentRole);
}

绑定View

QComboBox的Item设置属性后,需要绑定View去实现(比如Item的高度修改)

源码

QListView *ListView = new QListView();
ui->comboBox->setView(ListView);
ui->comboBox->view()->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);

实时刷新QComboBox数据

源码

/// \brief 重写showPopup(),每次显示时,更新QComboBox的item数据
void NullComboBox::showPopup()
{
    QStringList listData;
    QComboBox::clear();
    QComboBox::addItems(listData);
    QComboBox::showPopup();
}

改变下拉列表位置

源码

void NullComboBox::showPopup()
{
    QComboBox::showPopup();
    QWidget *popup = this->findChild<QFrame*>();
    //向下移动
    popup->move(popup->x(), popup->y() + 4);
    //向上弹出
    //popup->move(popup->x(), popup->y()-this->height()-popup->height());
}

总结

QComboBox的很多属性没有提供接口修改,需要使用到代理,有机会再总结

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值