一、概要
本文章主要记录,在实际开发运行中,有关“QComboBox”相关的基础应用。
二、基础函数
函数名 | 描述 |
---|---|
setCurrentIndex(int num) | 设置当前选项的索引 |
currentIndex() const | 获取当前选中项目的索引。如果没有选中任何项目,则返回 -1 |
currentText() const | 获取当前选中项目的文本 |
– | – |
count() const | 获取当前下拉框中项目的数量 |
itemText(int index) const | 获取指定索引处的项目的文本 |
itemData(int index, int role = Qt::UserRole) const | 返回指定索引处的项目的用户数据。role 参数用于指定要检索的数据的角色。 |
– | – |
addItem(const QString &text, const QVariant &userData = QVariant()) | 在下拉列表中添加一个项目 |
insertItem(int index, const QString &text, const QVariant &userData = QVariant()) | 在指定索引处插入一个项目 |
removeItem(int index) | 移除指定索引处的项目 |
clear() | 清除下拉列表中的所有项目 |
– | – |
currentIndexChanged(int index) | 当当前选中项目的索引发生变化时发射。你可以连接这个信号到一个槽函数来响应项目的改变 |
activated(int index) | 当用户选择一个项目并释放鼠标按钮或按下回车键时发射 |
//注释:activated()与 currentIndexChanged() 不同,activated这个信号只在用户通过用户界面进行交互时发射。
三、基础应用
1、内容居中显示
(1)、QComboBox下拉框和显示内容皆居中,其最终效果如下所示:
代码如下所示:
void MainWidget::initStyle()
{
//遍历按钮中每一个值,并将其设置为居中显示,如果只遍历这个效果图如图1所示
for (int i = 0; i < ui->qcb_test->count(); ++i)
{
ui->qcb_test->setItemData(i, Qt::AlignCenter, Qt::TextAlignmentRole);
}
//创建一个 " QLineEdit " 控件 QComboBox中有一个子控件就是 “QLineEdit ”,相当于借来一个居中的QLineEdit控件,替换本身自带的QLineEdit子控件样式
auto lineEdit1 = new QLineEdit();
lineEdit1->setAlignment(Qt::AlignCenter);
lineEdit1->setReadOnly(true);
lineEdit1->installEventFilter(this);
ui->qcb_test->setLineEdit(lineEdit1);
//当前显示索引号为0的值
ui->qcb_test->setCurrentIndex(0);
}
(2)、下拉框文本居中。//如果只遍历QComboBox中的值居中的话,显示效果如下所示:
//代码如下所示:
//遍历按钮中每一个值,并将其设置为居中显示
for (int i = 0; i < ui->qcb_test->count(); ++i)
{
ui->qcb_test->setItemData(i, Qt::AlignCenter, Qt::TextAlignmentRole);
}
//当前显示索引号为0的值
ui->qcb_test->setCurrentIndex(0);
(3)、显示效果居中。创建一个 " QLineEdit " 控件 QComboBox中有一个子控件就是 “QLineEdit ”,相当于借来一个居中的QLineEdit控件,替换本身自带的QLineEdit子控件样式。效果如下所示:
//创建一个 " QLineEdit " 控件 QComboBox中有一个子控件就是 “QLineEdit ”,相当于借来一个居中的QLineEdit控件,替换本身自带的QLineEdit子控件样式
auto lineEdit1 = new QLineEdit();
lineEdit1->setAlignment(Qt::AlignCenter);
lineEdit1->setReadOnly(true);
lineEdit1->installEventFilter(this);
ui->qcb_test->setLineEdit(lineEdit1);
//当前显示索引号为0的值
ui->qcb_test->setCurrentIndex(0);