首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何通过拖动更改QTableView行的顺序并将更改保存到模型中?

在Qt中,可以通过拖动来更改QTableView的行顺序,并将更改保存到模型中。下面是一个实现这个功能的示例代码:

代码语言:txt
复制
from PyQt5.QtWidgets import QApplication, QTableView, QAbstractItemView, QVBoxLayout, QWidget
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QStandardItemModel, QStandardItem

class MyTableView(QTableView):
    def __init__(self, parent=None):
        super(MyTableView, self).__init__(parent)
        self.setDragDropMode(QAbstractItemView.InternalMove)
        self.setSelectionBehavior(QAbstractItemView.SelectRows)
        self.setDragEnabled(True)
        self.setAcceptDrops(True)
        self.setDropIndicatorShown(True)

    def dropEvent(self, event):
        super(MyTableView, self).dropEvent(event)
        self.updateModel()

    def updateModel(self):
        model = self.model()
        rows = self.model().rowCount()
        for row in range(rows):
            item = model.item(row)
            item.setText(str(row + 1))
            model.setItem(row, 0, item)

def main():
    app = QApplication([])
    widget = QWidget()
    layout = QVBoxLayout(widget)
    table_view = MyTableView()
    model = QStandardItemModel()
    model.setColumnCount(1)
    model.setRowCount(5)
    for row in range(5):
        item = QStandardItem(str(row + 1))
        model.setItem(row, 0, item)
    table_view.setModel(model)
    layout.addWidget(table_view)
    widget.show()
    app.exec_()

if __name__ == '__main__':
    main()

这个示例代码创建了一个自定义的QTableView,通过设置拖放模式和选择行为,实现了拖动更改行顺序的功能。在dropEvent方法中,当拖放事件发生时,调用updateModel方法更新模型中的行顺序。updateModel方法遍历模型中的每一行,更新行号,并将更新后的行号设置到模型中。

这个示例中使用了PyQt5库来实现,你可以根据自己的需求选择其他的前端开发框架。对于后端开发、软件测试、数据库、服务器运维、云原生、网络通信、网络安全、音视频、多媒体处理、人工智能、物联网、移动开发、存储、区块链、元宇宙等专业知识,你可以根据具体的问题和需求进行深入研究和学习。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Qt数据库sqlite总结

*view = new QTableView; view->setModel(model);//重新定义模型,model直接从database.db数据库插入数据view->show(); 2.int...使QSqlQueryModel类  创建数据库能读写,继承QAbstractItemModel类 刚开始我们就讲到,这个模型默认是只读,所以我们在窗口上并不能对表格内容进行修改。...ui->tableView->setModel(model); //重新定义模型,model直接从database.db数据库插入数据 //ui->tableView->setEditTriggers...//当tableview被修改后,要通过submitAll()函数进行保存  bool QSqlTableModel::submitAll (),提交所有被修改数据,然后修改数据被保存在数据库 model...course表id属性外键,并将其显示为course表name属性值(course表在id上显示为name属性值) 如果用户更改课程属性,那么他只能在课程表中有的课程中进行选择,而不能随意填写课程

2.9K20
  • C++ Qt开发:数据库与TableView多组件联动

    ,我们通过该行name字段查询,并将查询结果关联到ListView组件内,同时将TableView中选中行字段分别显示在窗体底部LineEdit编辑框内。...toFirst(), toLast(), toNext(), toPrevious() 分别将映射数据移动到第一、最后一、下一、上一。 submit() 将界面上更改提交到模型。...最后,通过调用 submit 将界面上更改提交到模型,而 revert 则撤销未提交更改。...然后将映射器和模型绑定,并将三个文本框小部件与模型相应字段进行映射。最后,将映射器移动到第一。...QTableView,并通过 QDataWidgetMapper 将选中行数据映射到三个文本框,同时通过信号槽机制实现了在底部编辑框显示当前选中行功能。

    58610

    C++ Qt开发:StandardItemModel数据模型组件

    Qt::DropActions supportedDragActions() const 返回模型支持拖动操作。...model数据集进行绑定,当绑定后,模型数据发生变化则会自动刷新到View组件,我们就无需关心界面组件如何显示了,这个现实过程交给Model映射吧。...如下所示代码片段是一个使用 QStandardItemModel 例子,演示了如何创建一个带有表头和初始数据 QTableView。...循环添加数据到模型,包括 "20210506"、"lyshark" 和 "24"。 这样,就创建了一个包含表头和数据 QTableView并将其显示在 MainWindow 。...这个函数主要完成了将 TableView 模型数据保存到文件过程,包括文件选择、打开和写入。

    36910

    QTableView + QStandardItemModel模式显示表格冻结列(模板)

    在 QTableView ,QStandardItem 作为数据模型基本元素,负责展示和编辑表格数据。通过操作 QStandardItem,你可以实现对表格数据增删改查等操作。...定位元素:通过 QModelIndex 可以获取到模型中指定位置元素,例如获取第一第一个单元格 QModelIndex。2. ...访问数据:通过 QModelIndex 可以访问到模型对应元素数据,例如获取该元素文本内容或图片资源。3. ...操作元素:通过 QModelIndex 可以对模型对应元素进行操作,例如修改文本内容或更改图片资源。在使用 QModelIndex 时,需要注意以下几点:1. ...QModelIndex 是不可变,即不能直接修改它属性。如果需要对模型元素进行操作,需要通过模型提供接口来实现。

    20910

    提高效率 |ArcGIS Pro 中所有快捷键一网打尽

    编辑注记 用于编辑注记键盘快捷键 键盘快捷键 操作 注释 Ctrl + 拖动 更改“随沿要素”距离。 在“随沿要素”模式下,更改注记要素与边界要素之间距离。...Ctrl + 拖动 更改“随沿要素”距离。 在“随沿要素”模式下,更改注记要素与边界要素之间距离。...Alt + 单击内容窗格图层缩放至图层范围。 Z持续缩放。按住 Z 键同时拖动鼠标按钮,以将活动工具更改为连续放大或缩小模式。X + 单击逐步缩小。单击以从数据逐步缩小。V + 拖动围绕一点旋转。...Ctrl + 左箭头 折叠模型选定组。 Ctrl + Shift + 右箭头 展开模型所有组。 Ctrl+Shift+Left 折叠模型所有组。...按顺序播放所有步骤范围,或再次按下键盘快捷键暂停播放。 Ctrl + Shift + 上箭头 下一步。 在范围选项卡上步骤设置定义步骤数量范围内向前移动。

    1.1K20

    Keep It for mac(Mac笔记工具)

    Keep It Mac版是一款mac笔记工具,能够随时提供想要记录环境, 最神奇是几乎任何东西都能拖到应用,还能通过扩展功能来添加东西。...突出显示搜索结果搜索时,发现文本将在注释,Markdown文件,丰富和纯文本文档,PDF和已保存网页突出显示。改进物品清单现在可以不显示预览,现在日期显示在摘要同一。...和更多…查看未归档项目和没有标签项目。 在PDF查找文本已得到改进,您现在可以看到突出显示何时有注释。 Markdown预览屏蔽代码块有语法着色,拖动或粘贴Markdown链接。...iCloud共享组织和管理收藏栏可快速访问列表文件夹可以显示嵌套文件夹和软件包所有项目记录列表显示所有Mac和iOS设备上添加和修改项目选择多个项目显示选项将其添加到包,移动到文件夹,更改标签或添加标签每个列表都可以有自己排序设置侧边栏可以被隐藏...,并且当您拖动到窗口一边时将重新出现输入共享扩展程序现在可以添加文本,链接,文件,照片和电影,并且在使用它时,您可以添加标签,选择位置,并将文本附加到笔记。

    1.5K30

    Qt ModelView教程——只读Table

    ,这种方法非常直观,但是,在许多特别的应用程序,它会导致数据同步问题。 第二种方法是模型/视图编程,其中小部件不维护内部数据容器。 他们通过标准化接口访问外部数据,因此避免了数据重复。...标准部件 Table Widget是用户可以更改数据元素2D部件。 可以通过读写表小部件提供数据元素将表小部件集成到程序。...在我们示例,应显示数据已生成。 在实际应用程序, MyModel会有一个名为MyData成员,该成员充当所有读取和写入操作目标。 这个小例子说明了模型被动性质。...该模型不知道何时使用它或需要哪些数据。 每次视图请求时,它仅提供数据。 当需要更改模型数据时会发生什么? 视图如何认识到数据已更改并且需要再次读取?...该模型必须发出一个信号,该信号指示已更改了哪些单元格范围。 这将在第2.3节中演示。

    1.9K20

    PS模块第九节:PA PLM210详细练习

    2更改您创建项目配置文件在项目概要文件概览中选择包含项目配置文件GR##,然后选 择“详细信息”。...选择组合设备:1300和网络类型:PS04。若要复制数据,请选 择“复制As”。在网络类型字段,输入网络类型GR##,并停用未来日期指示器。使用复制(输入)确认您条目。保存更改。...通过将 结构树活动一个接一个地拖动到相应 WBS 元素来分配以下内容 最终如下: 5.维护活动1010和活动10关系为SS 6.维护1140和活动20关系为FS 7.通过图形器,创建从活动...选择连接符号,并将关系从前继 1010 客户接受开始拖动到后继 1000 布 局开始。...b) 通过拖动表格区域中活动并将其拖放到 WBS 元素上,来分配活动打 包和传递到 WBS 元素传递。然后保存您所有的更改

    1.7K31

    按钮与交互-使用按钮触发操作

    在本节,我们将介绍一个重要且简单元素,即按钮。这个小元素可以改变整个UX。我们将使用该按钮来缩放我们3D模型。此外,我们将尝试更改手机壁纸。...设置 现在,您可以更改项目名称并添加应用程序图标。在设置页面,将显示名称更改为角度AR或所需名称。在资产目录,将应用程序图标从assets文件夹拖放到选定插槽。...通过单击右上角带有双圆圈图标启用助理编辑器。您将看到我们同时拥有主故事板和代码。在swift文件,您将看到一个与之前ARSCNView链接IBOutlet。...由于我们删除了那个,将新ARSCNView链接到该Outlet。 让我们通过按住Control创建3个IBAction 并拖动ARSCNView Outlet 声明正下方每个按钮。...对minusButtonTapped重复相同步骤,但不是将模型缩放2x,而是将其更改为0.5。

    4.6K20

    回到基础:理解 JavaScript DOM

    Javascript DOM(文档对象模型)是一个允许开发人员操纵页面内容、结构和风格接口。在本文中,我们将理解什么是 DOM 以及如何用 Javascript 去操作它。...该模型构建在基于对象树结构,并定义: HTML 元素作为对象 HTML 元素属性和事件 访问HTML元素方法 ? HTML DOM模型 元素位置称为节点。...我们来看一个例子: 1var title = document.getElementById(‘header-title’); 我们得到 id 为 header-title 元素,并将其保存到变量。...1var items = document.getElementsByClassName(‘list-items’); 这里我们得到类 list-items 所有项目,并将它们保存到变量。...更改 HTML 元素 HTML DOM 允许我们通过更改其属性来对 HTML 元素内容和样式进行修改。 更改HTML innerHTML 属性可用于修改 HTML 元素内容。

    2.5K30

    独家 | 手把手教数据可视化工具Tableau

    Tableau 根据 Excel 数据源前 10,000 和 CSV 数据源前 1,024 数据类型来确定如何将混合值列映射为数据类型。...字段背景颜色指明它是离散(蓝色)还是连续(绿色)。 将维度拖到“”或“列”时,只需通过单击字段并选择“度量”便可将字段更改为度量。...有时,您可能预计 Tableau 会按一个顺序执行筛选器,但操作顺序决定筛选器按不同顺序执行,则结果可能会出人意料。如果发生这种情况,您有时可以更改操作在管道执行顺序。...从技术上来说,在以下过程您将添加一条参考线,但需通过以特定方式配置该“参考线”,最终您将得到所需标签。 STEP 1: 从“分析”窗格,将“参考线”拖到视图中,并将其放在“单元格”上。...要在 Tableau 创建热图,可将一个或多个维度分别放在“列”和“”功能区上。然后选择“方形”作为标记类型并将相关度量放在“颜色”功能区上。 可通过设置表单元格大小和形状来增强这种基本热图。

    18.9K71

    C++ Qt开发:QItemDelegate自定义代理组件

    在Qt,QStyledItemDelegate 类是用于创建自定义表格视图(如QTableView和QTableWidget)委托类,允许你自定义表格每个单元格外观和交互。...此处我们将实现对QTableView表格组件自定义代理功能,例如默认情况下表格缺省代理就是一个编辑框,我们只能够在编辑框内输入数据,而有时我们想选择数据而不是输入,此时就需要重写编辑框实现选择效果...在自定义代理QAbstractItemDelegate是所有代理类抽象基类,它用于创建自定义项委托。提供了一个基本框架,使得可以定制如何在视图中绘制和编辑数据项。...}// 将代理组件数据,保存到数据模型void QWIntSpinDelegate::setModelData(QWidget *editor, QAbstractItemModel *model,...并将通过ui->tableView->setItemDelegateForColumn(0,&intSpinDelegate);关联部件到指定table下标索引上面。

    83411

    Excel编程周末速成班第18课:使用用户窗体创建自定义对话框

    然而,用户可以通过拖动其标题栏来移动窗口。 UserForm对象以及可以放置在窗体上控件具有确定对象外观和行为以及与该对象相关任何数据属性和方法。...注意:你不必通过拖动来指定窗体位置,而可以通过设置其Top和Left属性或StartUpPosition属性来指定它位置。...1.在VBA编辑器,选择“插入➪用户窗体”以将新用户窗体添加到当前工程。 2.在“属性”窗口中,将窗体Name属性更改为TestForm,并将其Caption属性更改为“用户窗体演示”。...然后,在工具箱,单击“命令按钮”图标。 4.通过在窗体拖动将按钮放置在所需位置。 5.在“属性”窗口中,将按钮Name属性更改为“cmdMove”,将其Caption属性更改为“Move”。...6.再次单击该窗体,然后添加另一个命令按钮,将其Name属性更改为cmdClose并将其Caption属性更改为Close。

    11K30

    25.QT-模型视图

    模型视图设计模式核心思想 使模型(数据)与视图(显示)相分离 模型只需要对外提供标准接口存取数据,无需数据如何显示 视图只需要自定义数据显示方式,无需数据如何组织存储 当数据发生改变时,会通过信号通知视图...在Qt,不管模型以什么结构组织数据,都必须为每个数据提供不同索引值,使得视图能通过索引值访问模型具体数据 以QTreeView视图为例 QWidget w; QFileSystemModel...)引所在索引值 对于不同模型视图而言,row()、column(列)、parent(父索引)效果如下所示: ?...设置模型数据背景色(QBrush) Qt::ForegroundRole      9         设置模型数据前景色,比如字体(QBrush) 以QTableView为例 QWidget...QTableView详细使用请参考:24.QTableView函数使用,右击菜单实现 未完待续,接下来开始学习模型视图中委托

    1.5K20

    Qt编写数据可视化大屏界面电子看板2-配色方案

    ,都是以蓝色为主,部分黑色,估计也许这就是大众审美吧,那就在数据可视化大屏界面电子看板系统也加入蓝色风格、深蓝色风格、黑色风格,三种,加上默认紫色风格,共计内置4套风格选择,QtQSS是我见过最牛逼换肤控制样式界面颜色东东...,这个工具用好了,别提有多爽,直接qApp->setStyleSheet(qss);可以对整个应用程序换肤,如果自定义控件定义了Q_PROPERTY的话,也会立即更改自定义控件属性。...二、电子看板介绍 电子看板是目视化管理一种表现形式,即对数据状况一目了然地表现,主要是对于管理项目,它通过利用形象直观而又色彩适宜各种视觉感知信息来组织现场生产活动,目视管理依据人类生理特征,在生产现场充分利用信号灯...如果使用默认默认配色方案比如紫色风格,则配置文件颜色全部无效,会自动应用代码颜色,如果需要启用自定义颜色,则将配置文件 Theme=\x81ea\x5b9a\x4e49\x98ce\x683c...此时打开软件会应用配置文件颜色。 右键菜单可以截图保存,默认命名为 配色方案名称_布局方案名称.png 保存在snap目录下。

    1.1K00

    PowerBI 2020.11 月更新 - 各类图标更新及查找异常

    要了解有关显示关键字段更多信息,请阅读“折叠卡片时显示关键字段”部分。 桌卡属性 您可以更改模型视图中表卡如何显示具有卡属性信息。要查看卡属性,请确保未选择表或字段。...如下图所示,Sales表字段不再按字母顺序排列,因为关键字段OrderDate,ProdID和StoreKey已移至卡顶部。 性能改进 我们对模型视图进行了一些性能改进。...该滑块标签切换使滑块旁边指示全方位数据标签,和滑块提示拨动品牌提示显示为你单击并拖动每个端点,显示你选择值作为你工作滑块。 保存和发布报告时,视觉效果缩放状态也将被保存。...现在,您可以在地图上单击并拖动以创建一个选择矩形,使您可以轻松地一次选择多个点。感谢您到目前为止所有反馈,请继续让我们知道您如何找到体验以及希望支持其他视觉效果!...想要将Power BI报表 每天中午以PDF格式保存到 OneDrive,还是将不同报表以不同格式发送给团队每个人?没问题。

    8.3K30

    SceneKit 场景编辑器-为您AR体验构建3D舞台

    在此空间中,您将能够从不同角度查看3D模型并对您修改进行流式处理。您可以通过单击并用一根手指拖动更改视角。要在保持相同角度同时调整视图,请用两根手指滚动。...发射前地球 自定义模型 现在我们已经了解了场景编辑器方法,我们如何使自己成为自定义模型?为了与我们概念保持一致,我们将从Apple中选择一种设备。...您可以通过拖动操纵器或直接在位置框随意移动这些灯光。将“ 镜面反射”设置为白色。现在你看到灯光反射到表壳上了。 屏幕 让我们添加手表屏幕,好吗?...转到材质检查器,再次将“ 着色”更改为“ Blinn”并指定漫反射颜色为黑色。 表冠 现在,我们将在侧面增加表冠。转到对象库,选择一个圆柱体并将其放在场景。...在“ 对象库”,选择“ 胶囊体”并将拖动到场景。 胶囊体大小 在“ 属性”检查器,将“ 帽半径(Cap radius)”更改为0.3,将“ 高度”更改为1.5。

    5.5K20

    「 墙裂推荐」互联网人必备GIF制作14种选择

    现在可以简单了解下这个高效工具如何使用 1、要插入图像以合并成一个 GIF,只需单击菜单栏上 File 按钮,然后单击加载(快捷键:Ctrl + L) 2、接下来,选择您想要添加图像,并按下Ctrl...3、只需单击向上和向下箭头按钮即可更改图像顺序,如屏幕截图所示 4、你也可以通过简单拖动来改变一个帧(图像)位置。...比如,在这个例子,我图像是左对齐,我想把它放在中心,就像所有其他一样 5、接下来,更改动画时间。...LICEcap 在录屏过程可以随时拖动窗口改变录屏范围,Stop 过后自动保存为 GIF 格式。...但是在线服务会存在一个隐私和水印,为个人图像不外泄请注意网站服务条款。 Filmora Meme Maker 此网站是一个完全免费无需注册良心网站。

    1.3K30
    领券