qt 获取QtableWdiget所有选中行的数据并存入数组中
时间: 2024-05-07 22:22:49 浏览: 117
可以通过以下代码获取QTableWidget中所有选中行的数据并存入数组中:
```c++
QTableWidget* tableWidget = new QTableWidget();
// 假设有n行m列的表格
// 获取所有选中行的索引
QModelIndexList selectRows = tableWidget->selectionModel()->selectedRows();
int count = selectRows.count();
// 定义数组存储选中行的数据
QStringList selectedData;
// 遍历选中的行,获取数据并存入数组中
for (int i = 0; i < count; ++i) {
int row = selectRows.at(i).row(); // 获取选中行的索引
QString data = tableWidget->item(row, 0)->text(); // 获取该行第一列的数据
selectedData.append(data); // 存入数组中
}
// 输出选中行的数据
qDebug() << "Selected Data: " << selectedData;
```
这里假设QTableWidget对象为tableWidget,通过selectionModel()函数获取选择模型,再通过selectedRows()函数获取所有选中行的索引,最后通过遍历选中的行,获取数据并存入数组中。
相关问题
qt 获取QtableWdiget所有选中行的数据并存入Qlist中
可以通过以下步骤获取QTableWidget中所有选中的行的数据并存入QList中:
1. 获取所有选中行的索引列表:
```python
selected_rows = []
for index in self.tableWidget.selectedIndexes():
row = index.row()
if row not in selected_rows:
selected_rows.append(row)
```
2. 遍历索引列表,将每一行的数据存入QList中:
```python
data_list = []
for row in selected_rows:
row_data = []
for column in range(self.tableWidget.columnCount()):
item = self.tableWidget.item(row, column)
if item is not None:
row_data.append(item.text())
else:
row_data.append('')
data_list.append(row_data)
```
完整的代码示例:
```python
selected_rows = []
for index in self.tableWidget.selectedIndexes():
row = index.row()
if row not in selected_rows:
selected_rows.append(row)
data_list = []
for row in selected_rows:
row_data = []
for column in range(self.tableWidget.columnCount()):
item = self.tableWidget.item(row, column)
if item is not None:
row_data.append(item.text())
else:
row_data.append('')
data_list.append(row_data)
```
这样就可以将QTableWidget中所有选中的行的数据存入QList中了。
qt串口接收16进制并存入数组
要在Qt中接收16进制数据并存入数组,可以使用QByteArray和QDataStream来实现。首先,创建一个QByteArray对象来接收串口数据。然后,将QByteArray对象传递给QDataStream,使用QIODevice::ReadWrite模式读取字节数组。接下来,使用一个循环来逐个字节读取数据,并将它们转换为十六进制字符串存储起来。
以下是示例代码:
```cpp
void YComWindow::readYpfCom() {
QByteArray temp;
QString strHex;
if(ypfCom->bytesAvailable() >= 8) {
temp = ypfCom->readAll(); // 读取串口缓冲区数据
}
QDataStream out(&temp, QIODevice::ReadWrite); // 将字节数组读入
while(!out.atEnd()) {
qint8 outChar = 0;
out >> outChar; // 每字节填充一次,直到结束
QString str = QString("%1").arg(outChar & 0xFF, 2, 16, QLatin1Char('0')); // 十六进制的转换
// 存入数组或做其他处理
// array.append(outChar); // 假设array是一个QByteArray对象
strHex = str;
}
// 打印
qDebug() << strHex;
ui->textBrowser->insertPlainText(strHex);
}
```