QT的QListWidget使用

 本文进行的了QListWidget的使用,设计了如上所示的UI界面信息,具有以下几个功能:

添加,插入,删除,显示模式调整等功能

初始化

将模式选择添加到QpushButtonGroup中
my_button_group = new QButtonGroup(this);
my_button_group->addButton(ui->list_show,0);
my_button_group->addButton(ui->picture_show,1);

模式确定

// 设计显示模式
connect(ui->list_show,&QRadioButton::clicked,this,&Widget::onRadioButton);
connect(ui->picture_show,&QRadioButton::clicked,this,&Widget::onRadioButton);
ui->list_show->setChecked(true);
ui->province->setViewMode(QListView::ListMode);

// 信号处理函数
void Widget::onRadioButton()
{
    int checkid = my_button_group->checkedId();
    if( checkid == 0){
//list显示
        ui->province->setViewMode(QListView::ListMode);
    }else if(checkid==1){
//icon显示
        ui->province->setViewMode(QListView::IconMode);
    }
}

双击显示处理

connect(ui->province,&QListWidget::itemClicked,this,&Widget::onItemClicked);
    connect(ui->province,&QListWidget::itemDoubleClicked,
            this,&Widget::onItemDoubleClicked);

void Widget::onItemClicked(QListWidgetItem * item)
{
    ui->output_line->setText(item->text());
}

void Widget::onItemDoubleClicked(QListWidgetItem * item)
{
    ui->output_line->setText(item->text());
}

具体处理的信号槽函数

对应的icon文件地址映射符号
QStringList picture = {
    ":/new/prefix1/picture_source/健身.png",
    ":/new/prefix1/picture_source/吹风机.png",
    ":/new/prefix1/picture_source/天气.png",
    ":/new/prefix1/picture_source/报警.png",
    ":/new/prefix1/picture_source/无线网.png",
    ":/new/prefix1/picture_source/日历.png",
    ":/new/prefix1/picture_source/沐浴.png",
    ":/new/prefix1/picture_source/电视.png",
    ":/new/prefix1/picture_source/西餐.png",
    ":/new/prefix1/picture_source/酒店.png"
};
// 添加事件
void Widget::on_add_clicked()
{
    // 设置图片
    // 随机图像
    设置随机数

    int n = QRandomGenerator::global()->generate()%10;
    QIcon icon(picture[n]);
    QString text = ui->input_line->text();
    QListWidgetItem *item = new QListWidgetItem(icon,text);
    ui->province->addItem(item);
}
// 插入事假
void Widget::on_insert_clicked()
{
    QIcon icon(":/new/prefix1/picture_source/无线网.png");
    QString text = ui->input_line->text();
    QListWidgetItem *item = new QListWidgetItem(icon,text);
    int n = ui->province->currentRow();
    ui->province->insertItem(n,item);
}
// 删除事件
void Widget::on_delete_2_clicked()
{
     QListWidgetItem *item = ui->province->currentItem();
     ui->province->removeItemWidget(item);
     // 需要手动删除
     delete item;
}

结果显示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值