【QT】QComboBox和QPlainTextEdit基本介绍和应用示例

本文介绍了QT库中的QComboBox和QPlainTextEdit组件。QComboBox是一个下拉列表框,用于展示预设选项,支持编辑、添加、删除等功能,可以关联用户数据。QPlainTextEdit是用于显示和编辑纯文本的窗口,具备多种属性和功能,如自动换行、文本交互等。文中还展示了如何在两者之间进行组合应用。
摘要由CSDN通过智能技术生成

目录

1.QComboBox

1.1 QComboBox概述

1.2 QComboBox信号

1.3 QComboBox常用功能

1.4 QComboBox添加简单项

1.6 QComboBox列表项的访问

2.QPlainTextEdit

2.1 QPlainTextEdit概述

2.2 QPlainTextEdit的基本属性

2.3 QPlainTextEdit的公共函数

2.4 QPlainTextEdit的公共槽

2.5 QPlainTextEdit的信号

2.6 QPlainTextEdit的简单应用

2.7 QComboBox和QPlainTextEdit的组合应用

1.QComboBox

1.1 QComboBox概述

QComboBox是下拉列表框组件类,它提供一个下拉列表供用户选择,选择的项目内容就会显示在外面,其他项目会被隐藏,同时在下拉时之前选择的项目位置会被标记好,可以理解显示的项目其实是一个之前选择位置项目的副本。这个控件其实预制很很多选项给用户选择,减少手动输入的麻烦。也可以QComboBox也直接当作一个QLineEdit用作输入。QComboBox除了显示可见下拉列表外,每个项(item,或称列表项)还可以关联一个QVariant类型的变量,用于存储一些不可见数据。QComBox可以是可编辑的,允许用户修改列表中的每个项目,如添加、删除、上移、下移操作,还可以设置项的图标,但是这个不会影响到预先设置项目。

1.2 QComboBox信号

如果QComBox的当前项发生变化,则发出两个信号,urrentIndexChanged() 和 activated()。无论更改是通过编程方式还是通过用户交互完成的,始终发出 currentIndexChanged(),而 active() 仅在更改由用户交互引起时发出。当用户突出显示QComBox弹出列表中的项目时,将发出 highlighted() 信号。所有三个信号都存在两个版本,一个带有QString参数,另一个带有int参数。如果用户选择或突出显示像素图,则仅发出 int 信号。每当可编辑QComBox的文本发生更改时,都会发出 editTextChanged() 信号。

1.3 QComboBox常用功能

当用户在可编辑QComBox中插入新项目(字符串)的时候,还是有一个插入的策略。默认策略是 InsertAtBottom,但您可以使用 setInsertPolicy() 更改此设置。

可以使用 QValidator 将输入限制为可编辑的QComBox;参见 setValidator()。默认情况下,接受任何输入。

QComBox提供了很多好用的功能。

  • 可以使用插入单个、多个Item,例如 insertItem() 和 insertItems()

  • 可以使用 setItemText() 修改项目

  • 可以使用 removeItem() 删除项目

  • 可以使用 clear() 删除所有项目

  • 当前项的文本由 currentText() 返回,编号项的文本与 text() 一起返回

  • 可以使用 setCurrentIndex() 设置当前项

  • QComBox中的项目个数由 count() 返回

  • 可以使用 setMaxCount() 设置的最大项目数

  • 还可以用 setEditable() 是否可编辑 等等

对于可编辑的QComBox,您可以使用 setCompleter() 设置自动补全,就是输入一部分内容,就显示一个可能选择列表,等后面专门用 QCompleter 来完成。

1.4 QComboBox添加简单项

QComBox可以包含像素图以及字符串;可以用 insertItem() 和 setItemText() 的相关重置函数来插入带图标的列表项。

对于可编辑的QComBox,提供了函数 clearEditText(),用于清除显示的字符串而不更改QComBox的内容。(其实就是只是修改当前的显示内容,之前预制的项目还是不会被修改。)

void Widget::on_btnIniItemsclicked()

{//"初始化列表"按钮

QIcon icon;

icon.addFiIe(":/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));//不带图标

}

添加一个项时可以指定一个图标,图标来源于资源文件。

addltem()用于添加一个列表项,如果只是添加字符串列表项,而且数据来源于一个QStringList变量,可以使用addltems()函数,示例代码如下:

ui—>comboBox—>clear();

QStringList strList;

strList<<"北京"<<"上海"<<"天津"<<"河北省"<<"山东省"<<"山西省";

ui—>comboBox—>addItems(strList);

1.5 QComboBox添加具有用户数据的项

QComboBox::addItem()函数的两种参数的原型定义如下:

void addltem(const QString &text,const QVariant &userData = QVariant())

void addltem(const QIcon &ico,const QString &text,const QVariant &userData = 

QVariant())

不管是哪一个addltem()函数,后面都有一个可选的QVariant类型的参数userData,可以利用

这个变量存储用户定义数据。

这里定义了一个关联容器类QMap<QString,int>City_Zone,用于存储<城市,区号>映射表。为City_Zone填充数据后,给comboBox2添加项时,使用了foreach关键字遍历City_Zone.keys()。

按钮信号触发ComboBox组件使用用户数据,“初始化城市+区号”按钮的槽函数代码如下:

void Widget::on_btnIni2_clicked()

{//初始化具有自定义数据的

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->c1ear();

foreach(const QString &str,City_Zone.keys())

//添加项语句如下:城市名称作为项显示的字符串,电话区号作为项关联的用户数据,但是在列表框里只能看到

城市名称。

ui->comboBox2->addItem(str,City_Zone.value(str));

//注意:将City_zone的内容添加到列表框之后,列表框里显示的列表项的顺序与源程序中设置City_zone的顺序不一致,因为QMap<Key,T>容器类会自动按照Key排序。

1.6 QComboBox列表项的访问

QComboBox存储的项是一个列表,但是QComboBox不提供整个列表用于访问,可以通过索引访问某个项。访问项的一些函数主要有以下几种。

  • int currentlndex(),返回当前项的序号,第一个项的序号为0。

  • QString currentText(),返回当前项的文字。

  • QVariant currentData(int role= Qt::UserRole),返回当前项的关联数据,数据的缺省角色为role:Qt::UserRole

  • QString itemText(int index),返回指定索引号的项的文字。

  • QVariant itemData(int index,int role=Qt::UserRole),返回指定索引号的项的关联数据。

  • int count()&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷凝女子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值