Bruce Qi 2023-03-06 20:48 采纳率: 66.7%
浏览 45
已结题

Qt QStringListModel 插入项总是一下子添加两行

Qt QStringListModel 添加项 正常应该是点一下添加按钮,在列表最后一行插入一行,但是现在是两行两行的添加,插入项和删除项也是的,都是两行两行的。代码都是按照实例,不知道是什么问题

img

#include "mainwindow.h"
#include "ui_mainwindow.h"


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    strList<<"北京"<<"上海"<<"广州";
    model=new QStringListModel(this);
    model->setStringList (strList);
    ui->listView->setModel (model);
    ui->listView->setEditTriggers (QAbstractItemView::DoubleClicked|QAbstractItemView::SelectedClicked);

    connect (ui->BtnAddItem,SIGNAL(clicked(bool)),this,SLOT(on_BtnAddItem_clicked()));
    connect (ui->BtnDeletItem,SIGNAL(clicked(bool)),this,SLOT(on_BtnDeletItem_clicked()));
    connect (ui->BtnInsertItem,SIGNAL(clicked(bool)),this,SLOT(on_BtnInsertItem_clicked()));
    connect (ui->BtnClearList,SIGNAL(clicked(bool)),this,SLOT(on_BtnClearList_clicked()));
}

MainWindow::~MainWindow()
{
    delete ui;
}


void MainWindow::on_BtnAddItem_clicked()
{
    model->insertRow (model->rowCount ());
    QModelIndex index=model->index (model->rowCount ()-1,0);
    model->setData (index,"新建项",Qt::DisplayRole);
    ui->listView->setCurrentIndex (index);
}


void MainWindow::on_BtnDeletItem_clicked()
{
    QModelIndex index=ui->listView->currentIndex ();
    model->removeRow (index.row ());
}


void MainWindow::on_BtnInsertItem_clicked()
{
    QModelIndex index=ui->listView->currentIndex ();
    model->insertRow (index.row ());
    model->setData (index,"插入项",Qt::DisplayRole);
    ui->listView->setCurrentIndex (index);
}


void MainWindow::on_BtnClearList_clicked()
{
    model->removeRows(0,model->rowCount ());
}



  • 写回答

2条回答 默认 最新

  • mideum 2023-03-07 10:48
    关注

    这是因为on_BtnAddItem_clicked这个命名模式的slot在ui->setupUi(this)里面调用的QMetaObject::connectSlotsByName会自动和匹配的signal进行connect,然后你又手动connect了一次,于是就等于connect了两次,所以每次clicked以后,slot会执行两次
    你要么把手动connect的代码全都删掉,要么不要用on_objectName_signalName这种模式名称来命名的slot,这样就不会自动connect

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月7日
  • 已采纳回答 3月7日
  • 修改了问题 3月6日
  • 修改了问题 3月6日
  • 展开全部

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效