使用QCombox, Item带图标
foreach遍历QMap<key,value> 添加QCombox的Item ,带图标,显示城市名称,userData中存入区号
使用QCombox的on_comboxCityZone_currentIndexChanged事件,打印combox的text,currentData
布局
.cpp
#include "comboxexample.h"
#include "ui_comboxexample.h"
ComBoxExample::ComBoxExample(QWidget *parent)
: QWidget(parent)
, ui(new Ui::ComBoxExample)
{
ui->setupUi(this);
}
ComBoxExample::~ComBoxExample()
{
delete ui;
}
void ComBoxExample::on_btnIniItems_clicked()
{
QIcon icon;
icon.addFile("://images/icon.bmp");
for(int i=0;i<10;i++)
{
ui->comboxCity->addItem(icon,QString("Item%1").arg(i));
}
}
void ComBoxExample::on_btnClearItems_clicked()
{
ui->comboxCity->clear();
}
void ComBoxExample::on_chkEditable_clicked(bool checked)
{
ui->chkEditable->setChecked(checked);
}
void ComBoxExample::on_comboxCity_currentTextChanged(const QString &arg1)
{
ui->plainTextEdit->appendPlainText(arg1);
}
void ComBoxExample::on_btnIniCityZone_clicked()
{
QMap<QString,QString> CityZones; //QMap<key,value>
CityZones.insert("0579","金华市");
CityZones.insert("010","北京");
CityZones.insert("021","上海");
CityZones.insert("022","天津");
CityZones.insert("0532","青岛");
CityZones.insert("0411","大连");
CityZones.insert("0416","锦州");
CityZones.insert("0516","徐州");
CityZones.insert("0591","福州");
ui->comboxCityZone->clear();
QIcon icon;
icon.addFile("://images/718.bmp");
foreach(const QString &str,CityZones.keys()) //遍历map的keys key字符串
{
ui->comboxCityZone->addItem(icon,CityZones.value(str),str); //最后一个变量为用户自定义数据,这里存储区位编码
}
}
void ComBoxExample::on_comboxCityZone_currentIndexChanged(int index)
{
Q_UNUSED(index);
QString cityName = ui->comboxCityZone->currentText();
QString zone =ui->comboxCityZone->currentData().toString(); // 用户自定义数据 类型为QVariant,需要转为QString
ui->plainTextEdit->appendPlainText(QString("城市名%1 区号:%2").arg(cityName).arg(zone));
}
void ComBoxExample::on_btnClearText_clicked()
{
ui->plainTextEdit->clear();
}
效果