qt 如何从listview中获取选中的数据

qt 如何从listview中获取选中的数据,第1张

import QtQuick 21

import QtQuickWindow 21

import QtQuickControls 12

Window {

visible: true

width: 360

height: 360

Rectangle {

width: 200; height: 200

ListModel {

id: fruitModel

property string language: "en"

ListElement {

name: "Apple"

cost: 245

}

ListElement {

name: "Orange"

cost: 325

}

ListElement {

name: "Banana"

cost: 195

}

}

ListModel {

id: fruitModel2

property string language: "en"

ListElement {

name: "A"

cost: 245

}

ListElement {

name: "B"

cost: 325

}

ListElement {

name: "C"

cost: 195

}

ListElement {

name: "D"

cost: 195

}

}

Component {

id: fruitDelegate

Item{

Row {

Label{

objectName: "lblName" + index + "1"

text: " Fruit: " + name

}

Label{

objectName: "lblName" + index + "2"

text: " Fruit: " + name

}

}

}

}

ListView {

id:list

property color fruit_color: "green"

model: fruitModel

delegate: fruitDelegate

anchorsfill: parent

}

Rectangle {

x:200

width: 50; height: 50

color: "red"

MouseArea{

anchorsfill: parent

onClicked: {

listmodel = fruitModel2

consolelog(listchildren[0]children[3]children[0]children[0]objectName)

consolelog(listchildren[0]children[2]children[0]children[1]objectName)

}

}

}

}

}

通过columnCount 和 rowCount 获取到当前tablewidget的行数和列数,通过两个for循环,用

QTableWidgetItem item(int row, int column) const 成员函数遍历所有的单元格,再用获取到的QTableWidgetItem对象的virtual QVariant data(int role) const 成员函数取得单元格内数据,再调用QVariant的toString函数取得单元格内数据的字符串格式,然后你就可以将数据写入文件了。

通过

ui->printAgeingTableView->setIndexWidget(standardItemModel->index(i, 5), interval);

添加控件后,获取内容。

获取内容方式:将控件还原,然后再去拿取,不能当做QStandardItem进行 *** 作,否则无法拿到内容。

((QLabel )ui->printAgeingTableView->indexWidget(model->index(var,1)))->text();

这里原本控件是QLabel,还原后再拿取。

一、文件下载

文件下载地址:

也可以下载我上传到网盘上的:

二、文件内容介绍

1下载到的文件为qextserialport-12win-alpha ,解压并打开后其内容如下。

(点击可以查看清晰大图)

下面分别介绍:

(1)doc文件夹中的文件内容是QextSerialPort类和QextBaseType的简单的说明,我们可以使用记事本程序将它们打开。

(2)examples文件夹中是几个例子程序,可以看一下它的源码,不过想运行它们好像会出很多问题啊。

(3)html文件夹中是QextSerialPort类的使用文档。

(4)然后就是剩下的几个文件了。其中qextserialenumeratorcpp及qextserialenumeratorh文件中定

义的QextSerialEnumerator类是用来获取平台上可用的串口信息的。不过,这个类好像并不怎么好用,而且它不是我们关注的重点,所以下面

就不再介绍它了。

(5)qextserialbasecpp和qextserialbaseh文件定义了一个QextSerialBase

类,win_qextserialportcpp和win_qextserialporth文件定义了一个Win_QextSerialPort

类,posix_qextserialportcpp和posix_qextserialporth文件定义了一个

Posix_QextSerialPort类,qextserialportcpp和qextserialporth文件定义了一个

QextSerialPort类。这个QextSerialPort类就是我们上面所说的那个,它是所有这些类的子类,是最高的抽象,它屏蔽了平台特征,

使得在任何平台上都可以使用它。

2几个类的简单介绍。

下面是这几个类的关系图。

可以看到它们都继承自QIODevice类,所以该类的一些函数我们也可以直接来使用。图中还有一个QextBaseType类,其实它只是一个标

识,没有具体的内容,它用来表示Win_QextSerialPort或Posix_QextSerialPort

中的一个类,因为在QextSerialPort类中使用了条件编译,所以QextSerialPort类既可以继承自

Win_QextSerialPort类,也可以继承自Posix_QextSerialPort类,所以使用了QextBaseType来表示。这一点

我们可以在qextserialporth文件中看到。再说QextSerialPort类,其实它只是为了方便程序的跨平台编译,使用它可以在不同的

平台上,根据不同的条件编译继承不同的类。所以它只是一个抽象,提供了几个构造函数而已,并没有具体的内容。在qextserialporth文件中的

条件编译内容如下:

#ifdef_TTY_POSIX_

#include“posix_qextserialporth”

#define QextBaseTypePosix_QextSerialPort

#else

#include“win_qextserialporth”

#define QextBaseTypeWin_QextSerialPort

#endif

所以,其实我们没有必要使用这个类,直接使用Win_QextSerialPort或Posix_QextSerialPort就可以了。当然如果

你想使用这个类,实现同样的源程序可以直接在Windows和Linux下编译运行,那么一定要注意在Linux下这里需要添加

#define _TTY_POSIX_ 。而我们这里为了使得程序更明了,所以没有使用该类,下面也就不再介绍它了。

QextSerialBase类继承自QIODevice类,它提供了 *** 作串口所必需的一些变量和函数等,而

Win_QextSerialPort和Posix_QextSerialPort均继承自QextSerialBase

类,Win_QextSerialPort类添加了Windows平台下 *** 作串口的一些功能,Posix_QextSerialPort类添加了

Linux平台下 *** 作串口的一些功能。所以说,在Windows下我们使用Win_QextSerialPort类,在Linux下我们使用

Posix_QextSerialPort类。

3在QextSerialBase类中还涉及到了一个枚举变量QueryMode。

它有两个值Polling和EventDriven

。QueryMode指的是读取串口的方式,下面我们称为查询模式,我们将Polling称为查询方式Polling,将EventDriven称为事件驱动方式。

事件驱动方式EventDriven就是使用事件处理串口的读取,一旦有数据到来,就会发出readyRead()信号,我们可以关联该信号来读取串口的数据。在事件驱动的方式下,串口的读写是异步的,调用读写函数会立即返回,它们不会冻结调用线程。

而查询方式Polling则不同,读写函数是同步执行的,信号不能工作在这种模式下,而且有些功能也无法实现。但是这种模式下的开销较小。我们需要自己建立定时器来读取串口的数据。

在Windows下支持以上两种模式,而在Linux下只支持Polling模式。

三、小结。

这里讲了这么多,最后要说的只是,我们在Qt中使用这个类编写串口程序,根据平台的不同只需要分别使用四个文件。

以上就是关于qt 如何从listview中获取选中的数据全部的内容,包括:qt 如何从listview中获取选中的数据、Qt中用tablewidget写了一个表,如何获取它的全部数据并保存到一个文件中、如何获取qt动态生成控件的数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/web/9544622.html

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

发表评论

登录后才能评论

评论列表(0条)

保存