ZBLOG

void CustomItem::on_pushButton_clicked()//收藏 { like_setting=new QSettings("shoucang.ini",QSettings::IniFormat); qDebug()

根据您提供的代码,存在以下问题:

  1. 在条件语句中,判断 m_type 是否等于 1 ,如果是则显示本地歌曲不支持收藏的提示框。但是,在后续逻辑中,并没有对 m_type 进行赋值操作或者改变其值的代码。请确保在使用之前正确设置了 m_type 的值。

  2. 在循环遍历 m_list 列表时,每当找到匹配的 m_id 时,都会增加变量 x 的值。然而,在后续删除元素时并没有使用该变量来确定要删除的索引位置。建议修改为使用一个新的变量来记录需要删除的索引位置。

  3. 在收藏和取消收藏功能中,写入数组时使用了 beginWriteArrayendArray 来包围写入操作。但是在移除元素时,并没有使用这两个函数来包围删除操作。

下面是根据您提供的代码进行修改后的示例:

void CustomItem::on_pushButton_clicked() // 收藏按钮点击事件
{
    like_setting = new QSettings("shoucang.ini", QSettings::IniFormat);
    m_list = ReadSetting::connection_readSetting();

    if (m_type == 1) {
        QMessageBox::information(this, "提示", "本地歌曲不支持收藏!");
        return;
    }

    int indexToRemove = -1; // 需要删除的索引位置

    if (!m_list.isEmpty()) {
        bool isDuplicate = false;

        for (int i = 0; i < m_list.size(); i++) {
            if (m_id == m_list[i]) {
                isDuplicate = true;
                indexToRemove = i;
                break;
            }
        }

        if (!isDuplicate) {
            // 将新的收藏项写入数组
            like_setting->beginWriteArray("shoucang");
            int newIndex = m_list.size();
            like_setting->setArrayIndex(newIndex);
            like_setting->setValue("id", m_id);
            like_setting->setValue("singer", ui->lblname->text());
            like_setting->endArray();

            ui->pushButton->setIcon(QIcon(":/new/prefix1/image/xihuan.png"));
        } else {
            // 删除重复的收藏项
            like_setting->beginGroup("shoucang");
            like_setting->remove(QString::number(indexToRemove));
            like_setting->endGroup();

            ui->pushButton->setIcon(QIcon(":/new/prefix1/image/buxihuan.png"));
        }
    } else {
        // 第一次收藏歌曲
        like_setting->beginWriteArray("shoucang");
        like_setting->setArrayIndex(0);
        like_setting->setValue("id", m_id);
        like_setting->setValue("singer", ui->lblname->text());
        like_setting->endArray();

        ui->pushButton->setIcon(QIcon(":/new/prefix1/image/xihuan.png"));
    }

    delete litem; // 需要先释放之前创建的对象,否则会造成内存泄漏

    litem = new LikeItem;
    litem.setName(ui-lblname-text());
    litem.setMusicid(m_id);

    emit sendLikeItem(litem);
}

请注意,此处的修改只是基于您提供的代码进行了逻辑上的修正,并不能保证在其他部分没有错误。为了确保代码的正确性,请结合整个程序逻辑进行综合检查和测试。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=11394

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?