qtabelwidget怎么得到指定行和列的值

qtabelwidget怎么得到指定行和列的值,第1张

QTableWidget是QT对话框设计中常用的显示数据表格的控件。

学习QTableWidget就要首先看看QTableView控件(控件也是有”家世“的!就像研究人一样一样的),因为QTableWidget继承于类QTableView。

两者主要区别是QTableView可以使用自定义的数据模型来显示内容(也就意味着使用时先要通过setModel来绑定数据源),而QTableWidget则只能使用标准的数据模型

QSqlQuery sqlQuery = new QSqlQuery;

QString sqlStr = "select id, name from info";

sqlQuery->prepare( sqlStr );

if( sqlQuery->exec() )

{

//读取查询到的记录

while( sqlQuery->next() )

{

tableWidget->setItem( row, column, new QTableWidgetItem( sqlQuery->value(0)toString()));

tableWidget->setItem( row, column, new QTableWidgetItem( sqkQuery->value(1)toString()))

}

}

这样就把冲数据库中读取的内容写到表中了,自己获取表格的row,和column,

QTableWidget是一个用于显示和编辑表格数据的小部件,它只能处理QTableWidgetItem对象,而不能直接处理其他类型的数据。因此,使用QTableWidget绑定数据是为了将其他类型的数据转换成QTableWidgetItem对象,以便QTableWidget可以正确显示和编辑数据。

'''

简介

PyQT5的表格中支持右键菜单例子

'''

import sys

from PyQt5QtWidgets import (QMenu, QPushButton, QWidget, QTableWidget, QHBoxLayout, QApplication, QTableWidgetItem,

QHeaderView)

from PyQt5QtCore import QObject, Qt

class Table(QWidget):

if name == ' main ':

app = QApplication(sysargv)

example = Table()

exampleshow()

sysexit(appexec_())

你说你错了,那么你的错误表现形式是怎样的?是没有插入?还是数据显示不正确?

我目前目测是: item1->text()toDouble=sqrt(item0->text()toDouble()); 这句错了呢。

你这句可以这么写:

item1->setText(QString::number(qSqrt(item0->text()toDouble())));

ps:我没有用你的sqrt,而是用了Qt自己的qSqrt方法。

另:如果不是这地方的错误,请追问我,再说明你的错误表现。谢谢。

主要使用QTableView和QTableWidget中的三个函数实现QTableView::verticalScrollBar()->setSliderPosition(); //设置当前滑动条的位置QTableView::verticalScrollBar()->maximum(); //滑动条能移动的最大位置QTableView::verticalScrollBar()->value(); //获得当前滑动条的位置 QTableWidget是一个表示二维离散数组的表格。它在给定维度里显示当前用户滚动的单元格。当用户在一个空的单元格中输入一些文本时,QTableWidget自动创建一个QTableWidgetItem对象保存输入的文本。Qt 4推出了一组新的item view类,它们使用model/view结构来管理数据与表示层的关系。这种结构带来的功能上的分离给了开发人员更大的d性来定制数据项的表示,它也提供一个标准的model接口,使得更多的数据源可以被这些item view使用。这里对model/view的结构进行了描述,结构中的每个组件都进行了解释,给出了一些例子说明了提供的这些类如何使用。Model/View 结构Model-View-Controller(MVC), 是从Smalltalk发展而来的一种设计模式,常被用于构建用户界面。经典设计模式的著作中有这样的描述:MVC 由三种对象组成。Model是应用程序对象,View是它的屏幕表示,Controller定义了用户界面如何对用户输入进行响应。在MVC之前,用户界面设计倾向于三者揉合在一起,MVC对它们进行了解耦,提高了灵活性与重用性。假如把 view与controller结合在一起,结果就是model/view结构。这个结构依然是把数据存储与数据表示进行了分离,它与MVC都基于同样的思想,但它更简单一些。这种分离使得在几个不同的view上显示同一个数据成为可能,也可以重新实现新的view,而不必改变底层的数据结构。为了更灵活的对用户输入进行处理,引入了delegate这个概念。它的好处是,数据项的渲染与编程可以进行定制。如上图所示,model与数据源通讯,并提供接口给结构中的别的组件使用。通讯的性质依赖于数据源的种类与model实现的方式。view从model获取model indexes,后者是数据项的引用。通过把model indexes提供给model,view可以从数据源中获取数据。在标准的 views中,delegate会对数据项进行渲染,当某个数据项被选中时,delegate通过model indexes与model直接进行交流。总的来说,model/view 相关类可以被分成上面所提到的三组:models,views,delegates。这些组件通过抽象类来定义,它们提供了共同的接口,在某些情况下,还提供了缺省的实现。抽象类意味着需要子类化以提供完整的其他组件希望的功能。这也允许实现定制的组件。models,views,delegates之间通过信号,槽机制来进行通讯:从model发出的信号通知view数据源中的数据发生了改变。从view发出的信号提供了有关被显示的数据项与用户交互的信息。从delegate发生的信号被用于在编辑时通知model和view关于当前编辑器的状态信息。Models所有的item models都基于QAbstractItemModel类,这个类定义了用于views和delegates访问数据的接口。数据本身不必存储在model,数据可被置于一个数据结构或另外的类,文件,数据库,或别的程序组件中。关于model的基本概念在Model Classes部分中描述。QAbstractItemModel提供给数据一个接口,它非常灵活,基本满足views的需要,无论数据用以下任何样的形式表现,如tables,lists,trees。然而,当你重新实现一个model时,如果它基于table或list形式的数据结构,最好从QAbstractListModel,QAbstractTableModel开始做起,因为它们提供了适当的常规功能的缺省实现。这些类可以被子类化以支持特殊的定制需求。子类化model的过程在Create New Model部分讨论QT提供了一些现成的models用于处理数据项:QStringListModel 用于存储简单的QString列表。QStandardItemModel 管理复杂的树型结构数据项,每项都可以包含任意数据。QDirModel 提供本地文件系统中的文件与目录信息。QSqlQueryModel, QSqlTableModel,QSqlRelationTableModel用来访问数据库。假如这些标准Model不满足你的需要,你应该子类化QAbstractItemModel,QAbstractListModel或是QAbstractTableModel来定制。Views不同的view都完整实现了各自的功能:QListView把数据显示为一个列表,QTableView把Model 中的数据以table的形式表现,QTreeView 用具有层次结构的列表来显示model中的数据。这些类都基于QAbstractItemView抽象基类,尽管这些类都是现成的,完整的进行了实现,但它们都可以用于子类化以便满足定制需求。DelegatesQAbstractItemDelegate 是model/view架构中的用于delegate的抽象基类。缺省的delegate实现在QItemDelegate类中提供。它可以用于Qt标准views的缺省 delegate排序在model/view架构中,有两种方法进行排序,选择哪种方法依赖于你的底层Model。假如你的model是可排序的,也就是它重新实现了QAbstractItemModel::sort()函数,QTableView与QTreeView都提供了API,允许你以编程的方式对Model数据进行排序。另外,你也可以进行交互方式下的排序(例如,允许用户通过点击view表头的方式对数据进行排序),可以这样做:把QHeaderView::sectionClicked()信号与QTableView::sortByColum()槽或QTreeView::sortByColumn()槽进行联结就好了。另一种方法是,假如你的model没有提供需要的接口或是你想用list view表示数据,可以用一个代理model在用view表示数据之前对你的model数据结构进行转换。便利类许多便利类都源于标准的view类,它们方便了那些使用Qt中基于项的view与table类,它们不应该被子类化,它们只是为Qt 3的等价类提供一个熟悉的接口。这些类有QListWidget,QTreeWidget,QTableWidget,它们提供了如Qt 3中的QListBox, QlistView,QTable相似的行为。这些类比View类缺少灵活性,不能用于任意的models,推介使用model/view的方法处理数据。

QListWidget::setItemWidget

先创建一个QWidget,然后对这个QWidget设置布局,然后往布局里添加你的按钮,最后把这个QWidget设置到item上

QWidget是一个包裹,它占据Item的所有空间

QTableWidget tvDecoderItemArea = new QTableWidget(this);

tvDecoderItemArea->setObjectName("tvDecoderItemArea");

tvDecoderItemArea->setColumnCount(1);

tvDecoderItemArea->horizontalHeader()->setVisible(false);

tvDecoderItemArea->verticalHeader()->setVisible(false);

tvDecoderItemArea->horizontalHeader()->setStretchLastSection(true);

int index = tvDecoderItemArea->rowCount();

tvDecoderItemArea->setRowCount(index+1);

QPushButton pItem = new QPushButton(tr("text_%1")arg(index+1));

tvDecoderItemArea->setCellWidget(index,0,pItem);

以上就是关于qtabelwidget怎么得到指定行和列的值全部的内容,包括:qtabelwidget怎么得到指定行和列的值、QTableWidget问题.菜鸟求助高手,高手,高手在哪里、qttablewidget绑定数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9443736.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存