2、
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
Init();
}
Widget::~Widget()
{
delete ui;
}
void Widget::Init(){
connect(ui->btnInit,SIGNAL(clicked()),this,SLOT(slotInitItems()));
connect(ui->btnClear,SIGNAL(clicked()),this,SLOT(slotClearItems()));
connect(ui->btnInsertItem,SIGNAL(clicked()),this,SLOT(slotInsertItem()));
connect(ui->btnDeleteItem,SIGNAL(clicked()),this,SLOT(slotDeleteItem()));
connect(ui->btnDisplayItems,SIGNAL(clicked()),this,SLOT(slotDisplayItems()));
connect(ui->comboBox,SIGNAL(CurrentIndexChanged(int)),
this,SLOT(slotCurrentIndexChanged(int)));
connect(ui->comboBox,SIGNAL(CurrentIndexChanged(QString &)),
this,SLOT(slotCurrentIndexChanged(QString &)));
}
//信号与槽 列表框初始化实现
void Widget::slotInitItems()
{
slotClearItems();
QMap<QString,int>map;
map.insert("张三",81);
map.insert("李四",80);
map.insert("王五",79);
map.insert("赵六",78);
QIcon icon("../GIF/1.jpg");
foreach(const QString name,map.keys())
{
if(ui->chkWithIcon->isChecked())
ui->comboBox->addItem(icon,name,map.value(name));
else {
ui->comboBox->addItem(name,map.value(name));
}
}
}
//信号与槽 列表框的清除
void Widget::slotClearItems()
{
ui->comboBox->clear();
}
//信号与槽 添加项
void Widget::slotInsertItem()
{
int pos=ui->spinBoxInsertPos->value();
QIcon icon("../GIF/1.jpg");
if(ui->chkWithIcon->isChecked())
ui->comboBox->insertItem(pos,icon,"new item",88);
else {
ui->comboBox->insertItem(pos,"new item",88);
}
}
//信号与槽 删除项
void Widget::slotDeleteItem()
{
int pos=ui->spinBoxDelePos->value();
ui->comboBox->removeItem(pos);
}
//信号与槽 显示列表项信息功能实现
void Widget::slotDisplayItems()
{
for(int i=0;ui->comboBox->count();i++)
{
ui->plainTextEdit->appendPlainText(QString("index:%1|text:%2|score:%3")
.arg(i)
.arg(ui->comboBox->itemText(i))
.arg(ui->comboBox->itemData(i).toString()));
}
ui->plainTextEdit->appendPlainText("=========================");
}
//信号与槽 列表框当前选项改变时槽函数实现
void Widget::slotCurrentIndexChanged(int val)
{
ui->plainTextEdit->appendPlainText(QString("current index changed index= %1").arg(val));
}
void Widget::slotCurrentIndexChanged(const QString &val)
{
ui->plainTextEdit->appendPlainText(QString("currrent index changed text = %1").arg(val));
}
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QIcon>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
void Init();
private slots:
void slotInitItems(); //初始化下拉列表框
void slotClearItems(); //清空列表框所有项
void slotInsertItem(); //插入新项
void slotDeleteItem(); //删除某项
void slotDisplayItems();//文本框中显示所有项信息,包含附加数据
//当前选型改变时槽函数(包括两种参数床底方式,分别为当前项索引及当前项文本)
void slotCurrentIndexChanged(int val);
void slotCurrentIndexChanged(const QString &val);
};
#endif // WIDGET_H