QT笔记——QComboBox

文章目录

  • 一、概要
  • 二、基础函数
  • 三、基础应用
    • 1、内容居中显示

一、概要

本文章主要记录,在实际开发运行中,有关“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);  //它允许一个对象(这里是this,通常意味着包含这段代码的类实例本身)过滤另一个对象(pwLineEdit)的事件
	ui->qcb_test->setLineEdit(lineEdit1);

  //当前显示索引号为0的值
	ui->qcb_test->setCurrentIndex(0);
}

(2)、下拉框文本居中。//如果只遍历QComboBox中的值居中的话,显示效果如下所示:
QT笔记——QComboBox_第1张图片

//代码如下所示:
//遍历按钮中每一个值,并将其设置为居中显示
	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);

你可能感兴趣的:(QT,qt,学习,开发语言)