QT 实现tablewidget整行的上下移动和双击编辑

这篇具有很好参考价值的文章主要介绍了QT 实现tablewidget整行的上下移动和双击编辑。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、效果展示
QT 实现tablewidget整行的上下移动和双击编辑
二、实现方法
1、先对tablewidget设置

    this->ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
    this->ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);  //单击选择行
    this->ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection); //设置只能选择一行
    this->ui->tableWidget->setEditTriggers(QAbstractItemView::DoubleClicked);   //设置内容不可更改
    this->ui->tableWidget->setAlternatingRowColors(true);                        //设置隔行改变颜色
    this->ui->tableWidget->verticalHeader()->setVisible(true);                  //显示行号
    this->ui->tableWidget->setTextElideMode(Qt::ElideMiddle);

    this->ui->tableWidget->setColumnCount(peopleItemMax);
    this->ui->tableWidget->setRowCount(0);
    this->ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<tr("人员名称")<<tr("等待时间(分钟)")<<tr("开始时间")<<tr("结束时间"));
    this->ui->tableWidget->setContextMenuPolicy(Qt::CustomContextMenu);
    this->ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);

2、实现行的上下移动
主要实现方式是通过交换两行的数据来实现的

   QString currItemNumber = ui->tableWidget->item(currSelectRow,orderItemNumber)->text();//合同编号
    QString currItemProductName = ui->tableWidget->item(currSelectRow,orderItemProductName)->text();//零件名称
    QString currItemProductNo = ui->tableWidget->item(currSelectRow,orderItemProductNo)->text();//零件编号
    QString currItemDrawingNo = ui->tableWidget->item(currSelectRow,orderItemDrawingNo)->text();//图纸图号
    QString currItemMaterial = ui->tableWidget->item(currSelectRow,orderItemMaterial)->text();//材质
    QString currItemQuantity = ui->tableWidget->item(currSelectRow,orderItemQuantity)->text();//数量
    QString currItemWorkTime = ui->tableWidget->item(currSelectRow,orderItemWorkTime)->text();;    //工作时间
    QDate currItemDeliveryDate= ((QDateEdit *)ui->tableWidget->cellWidget(currSelectRow,orderItemDeliveryDate))->date();    //交期
    QString currItemRemarks = ui->tableWidget->item(currSelectRow,orderItemRemarks)->text();//备注


    ui->tableWidget->item(currSelectRow,orderItemNumber)->setText(ui->tableWidget->item(moveRow,orderItemNumber)->text());//合同编号
    ui->tableWidget->item(currSelectRow,orderItemProductName)->setText(ui->tableWidget->item(moveRow,orderItemProductName)->text());//零件名称
    ui->tableWidget->item(currSelectRow,orderItemProductNo)->setText(ui->tableWidget->item(moveRow,orderItemProductNo)->text());//零件编号
    ui->tableWidget->item(currSelectRow,orderItemDrawingNo)->setText(ui->tableWidget->item(moveRow,orderItemDrawingNo)->text());//图纸编号
    ui->tableWidget->item(currSelectRow,orderItemMaterial)->setText(ui->tableWidget->item(moveRow,orderItemMaterial)->text());//材质
    ui->tableWidget->item(currSelectRow,orderItemQuantity)->setText(ui->tableWidget->item(moveRow,orderItemQuantity)->text());//数量
    ui->tableWidget->item(currSelectRow,orderItemWorkTime)->setText(ui->tableWidget->item(moveRow,orderItemWorkTime)->text());//工作时间

    ((QDateEdit *)ui->tableWidget->cellWidget(currSelectRow,orderItemDeliveryDate))//交期
            ->setDate(((QDateEdit *)ui->tableWidget->cellWidget(moveRow,orderItemDeliveryDate))->date());
    ui->tableWidget->item(currSelectRow,orderItemRemarks)->setText(ui->tableWidget->item(moveRow,orderItemRemarks)->text());//备注

    ui->tableWidget->item(moveRow,orderItemNumber)->setText(currItemNumber);//合同编号
    ui->tableWidget->item(moveRow,orderItemProductName)->setText(currItemProductName);//零件名称
    ui->tableWidget->item(moveRow,orderItemProductNo)->setText(currItemProductNo);//零件编号
    ui->tableWidget->item(moveRow,orderItemDrawingNo)->setText(currItemDrawingNo);//图纸编号
    ui->tableWidget->item(moveRow,orderItemMaterial)->setText(currItemMaterial);//材质
    ui->tableWidget->item(moveRow,orderItemQuantity)->setText(currItemQuantity);//数量
    ui->tableWidget->item(moveRow,orderItemWorkTime)->setText(currItemWorkTime);//工作时间
    ((QDateEdit *)ui->tableWidget->cellWidget(moveRow,orderItemDeliveryDate))->setDate(currItemDeliveryDate);//开始时间
    ui->tableWidget->item(moveRow,orderItemRemarks)->setText(currItemRemarks);//备注
    //列表模型和表格模型的所有数据项都是以根项为父项的,用QModelIndex()表示父项
    QModelIndex index = ui->tableWidget->model()->index(moveRow, orderItemNumber, QModelIndex());

    ui->tableWidget->setCurrentIndex(index);

下面这两句主要实现选择行跟随移动的行文章来源地址https://www.toymoban.com/news/detail-503904.html

    QModelIndex index = ui->tableWidget->model()->index(moveRow, orderItemNumber, QModelIndex());

    ui->tableWidget->setCurrentIndex(index);

到了这里,关于QT 实现tablewidget整行的上下移动和双击编辑的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT6实现按钮双击事件

    实现思路:利用事件过滤器实现按钮双击功能,主要是通过调用installEventFilter函数和重写事件eventFilter函数实现。   1、创建项目 启动Qt Creator,在主菜单的[文件]下,打开[新建文件或项目]菜单,弹出新建文件或项目对话框,创建Qt Widgets Application 项目,在Class Information步骤中

    2024年02月12日
    浏览(34)
  • 基于GSYVideoPlayer自定义布局结合RecyclerView高仿抖音实现上下滑动双击屏幕点赞/单击暂停,拖动进度条实时改变时间以及进度条放大

    注意代码量有点多,但是你不要就此放弃,看效果图决定你需不需该需求😀并且代码好理解基本上都是基于GSYVideoPlayer的方法进行重写改造出来的,请放心食用 GSYVideoPlayer是一款开源并且强大的Android视频播放器方便你们阅读了GSYVideoPlayer更快速的上手GSYVideoPlayer框架地址 效果

    2024年02月03日
    浏览(92)
  • Qt--tableWidget相关操作

    1.获取当前选中的行数 所用函数:QModelIndex currentIndex() const; 2.取出当前选中行的内容 所用函数:QTableWidgetItem *item(int row, int column) const;

    2024年02月10日
    浏览(22)
  • QT tableWidget的简单使用

    1、不能对表格内容进行修改 设置某一列不可编辑 2、设置表格为整行选择 3、设置隐藏表头和列头 隐藏列 4、加入控件 5、列可扩展 6、单元格字体居中 7、获取行数和列数 8、右键使能,在给widget加菜单时,需要加入此行代码 9、给QTableWidget添加控件 10、获取当前点击的控件在

    2024年02月13日
    浏览(27)
  • vxe表格实现键盘上下左右方向键移动聚焦

    vxe 表格分为 vxe-table 一般表格和 vxe-grid 高级表格,两者之间的区别我就不说啦,我们来实现这两种表格用键盘按动上下左右方向键达到移动聚焦的效果。话不多说,上正文!!! 首先在标签放入这两个事件: 主要是利用vxe表格内置的@cell-click事件,来监听点击单元格的行号

    2024年02月07日
    浏览(63)
  • Qt 使用QLabel的派生类实现QLabel的双击响应

            在QLabel中没有双击等事件响应,需要 构建其 派生类 ,自定义 信号(signals) 、重载 事件函数(event) ,最后在Qwidget中 使用connect链接即可 ,进而实现响应功能。         对于其余没有需求事件响应的QObject同样适用。         此外,该功能同样可以 使用 事件过滤器 ,

    2024年02月13日
    浏览(37)
  • C++ Qt开发:TableWidget表格组件

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍 TableWidget 表格组件的常用方法及灵活运用。 QTableWidget 是 Qt 中用于显示表格数

    2024年02月04日
    浏览(37)
  • Qt双击某一文件通过自己实现的程序打开,并加载文件显示

    简述 在Windows系统中,双击某类扩展名的文件,通过自己实现的程序打开文件,并正确加载及显示文件。有两种方式可以到达这个目的。 对于系统不知道的扩展名的文件,第一次打开时,需要自行设置打开方式。 设置流程: 右键或双击文件-打开方式,弹出以下界面 点击“在

    2024年02月11日
    浏览(35)
  • QT-TableWidget多个行或者列合并效果

    使用代理,重新组合了行和列的合并,符合更多的实际应用场景,通过参数的方式,可以自定义设置想要的效果。 https://download.csdn.net/download/u013083044/86784759

    2024年02月15日
    浏览(26)
  • Flutter 双指缩放和双指移动共存手势检测系列之--1方案

    本文所采用Flutter 版本为 3.10.6, 也许后续版本官方会对手势做进一步丰富完善,以解决本文涉及到的解决方案。 本文涉及项目手势需求 :双指向外或内触屏伸缩,对图片进行缩放;双指在屏幕上同向触屏移动,移动图片。 Flutter 使用中采用 GestureDetector 进行移动或是手势判

    2024年02月02日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包