QT第六天
QComboBox和QPlainTextEdit的用法
QComboBox的使用
设计时属性设置
在界面上放置QComboBox组件后,双击组件,弹出列表项编辑器对话框
可以在对话框中添加列表项,设置项的图标。
用代码添加简单项
包含addItem与addItems区分
void Widget::on_pushButton_clicked()//初始化列表按钮
{
QIcon icon;
icon.addFile(":/images/icons/aim.ico");//通过路径获得图标
ui->comboBox->clear();//首先需要清除列表
for(int i=0;i<20;i++)
{
ui->comboBox->addItem(icon,QString::asprintf("Item %d",i));//含图标的初始化
//addItem用于添加一个列表项
//addItems用于添加多个列表项
}
}
void Widget::on_pushButton_3_clicked()//添加多项按钮
//这里就使用了addItems()
{
QIcon icon;
icon.addFile(":/images/icons/UNIT.ICO");
ui->comboBox->clear();
QStringList strList;
strList<<"北京"<<"上海"<<"天津"<<"河北"<<"山东"<<"山西";
ui->comboBox->addItems(strList);//addItems无法添加图标
}
添加具有用户数据的项
void Widget::on_pushButton_4_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->comboBox_2->clear();
foreach(const QString &str ,City_Zone.keys())
{
ui->comboBox_2->addItem(str,City_Zone.value(str));
}
}
QComboBox列表项的访问
void Widget::on_comboBox_2_currentIndexChanged(const QString &arg1)//改变comboBox_2中的选项时触发
{
QString zone=ui->comboBox_2->currentData().toString();//项关联的数据
ui->plainTextEdit->appendPlainText(arg1+":"+zone);
}
void Widget::on_comboBox_currentIndexChanged(const QString &arg1)//改变comboBox中的选项时触发
{
ui->plainTextEdit->appendPlainText(arg1);
}
QPlainTextEdit
逐行读取文字内容
void Widget::on_pushButton_5_clicked()//文本框内容添加到ComboBox按钮
{
QTextDocument *doc=ui->plainTextEdit->document();//文本对象
//QTextDocument是内存中的文本对象,以文本块的方式存储,一个文本块就是一个段落,每个段落以回车符结束
//提供的函数
//int blockCount()获取文本块个数
//QtextBlock findBlockByNumber(int blockNumber)读取某个文本块,序号从0开始至blockCount()-1
//一个document有多个TextBlock
//从一个document中读取的一个文本块类型为QTextBlock,通过QTextBlock::text()可以获取纯文字文本
int cnt=doc->blockCount();//计算文本块个数
QIcon icon;
icon.addFile(":/images/icons/aim.ico");
for(int i=0;i<cnt;i++)
{
QTextBlock textLine=doc->findBlockByNumber(i);//文本中的一段
//需要添加头文件#include<QTextBlock>
QString str=textLine.text();//从TextBlock类型转换为QString类型
ui->comboBox->addItem(icon,str);//添加到comboBox中
}
}
使用QPlainTextEdit自带的快捷菜单
void Widget::on_plainTextEdit_customContextMenuRequested(const QPoint &pos)//实现右键快捷菜单
{
QMenu *menu=ui->plainTextEdit->createStandardContextMenu();//需要添加头文件#include<QMenu>
menu->exec(pos);//在鼠标点击的位置出现
}
其他功能的实现代码
void Widget::on_pushButton_2_clicked()//清除列表按钮
{
ui->comboBox->clear();
}
void Widget::on_checkBox_clicked(bool checked)//可编辑选项
{
if(checked)
{
ui->comboBox->setEditable(true);
}
else
ui->comboBox->setEditable(false);
}
void Widget::on_checkBox_2_clicked(bool checked)//read only选项
{
ui->plainTextEdit->setReadOnly(checked);
}
void Widget::on_pushButton_6_clicked()//清空文本按钮
{
ui->plainTextEdit->clear();
}