Qt::遍历tableview中的数据

最近有个需求将tableview中的数据 导出到Excel表。那么首先要做的是拿到数据,写了点遍历的代码,比较常用在此记录:

   vector<QStringList> vecList;
    int row = ui->tableView->model()->rowCount();
    int col = ui->tableView->model()->columnCount();

    for (int i = 0; i < row; i++)
    {
        QStringList rowStr;
        for (int j = 0; j < col; j++)
        {
            QModelIndex index = ui->tableView->model()->index(i, j);
            rowStr<< ui->tableView->model()->data(index).toString();//一行数据
        }
        vecList.push_back(rowStr);
    }
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以通过以下步骤在Qt使用按钮将TableView数据进行查找: 1. 创建一个QLineEdit对象,让用户输入查找关键字。 2. 创建一个QPushButton对象,用于用户点击以开始查找过程。 3. 在QPushButton的clicked信号,获取用户输入的查找关键字。 4. 遍历TableView的每一行,检查每一行是否包含查找关键字。 5. 如果包含,将该行设置为当前选的行。 6. 如果没有找到任何匹配项,弹出一个消息框告诉用户没有找到任何匹配项。 以下是一个示例代码: ```python # 在Qt使用Python和PyQt5实现 from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QTableView, QLineEdit, QPushButton, QMessageBox from PyQt5.QtGui import QStandardItemModel, QStandardItem class Example(QWidget): def __init__(self): super().__init__() # 创建一个QStandardItemModel对象,用于存储TableView数据 self.model = QStandardItemModel() # 创建一个QTableView对象,并将QStandardItemModel对象设置为其数据模型 self.tableView = QTableView() self.tableView.setModel(self.model) # 创建一个QLineEdit对象,让用户输入查找关键字 self.lineEdit = QLineEdit() self.lineEdit.setPlaceholderText("输入关键字") # 创建一个QPushButton对象,用于用户点击以开始查找过程 self.button = QPushButton("查找") self.button.clicked.connect(self.find) # 创建一个垂直布局,并将QTableView、QLineEdit和QPushButton添加到其 self.layout = QVBoxLayout() self.layout.addWidget(self.tableView) self.layout.addWidget(self.lineEdit) self.layout.addWidget(self.button) # 设置窗口的主布局 self.setLayout(self.layout) # 添加一些示例数据到QStandardItemModel对象 self.model.appendRow([QStandardItem("John"), QStandardItem("Doe"), QStandardItem("25")]) self.model.appendRow([QStandardItem("Jane"), QStandardItem("Doe"), QStandardItem("30")]) self.model.appendRow([QStandardItem("Bob"), QStandardItem("Smith"), QStandardItem("40")]) def find(self): # 获取用户输入的查找关键字 keyword = self.lineEdit.text() # 遍历TableView的每一行,检查每一行是否包含查找关键字 found = False for row in range(self.model.rowCount()): for column in range(self.model.columnCount()): item = self.model.item(row, column) if item.text().lower().find(keyword.lower()) != -1: # 如果包含,将该行设置为当前选的行 self.tableView.selectRow(row) found = True break if found: break # 如果没有找到任何匹配项,弹出一个消息框告诉用户没有找到任何匹配项 if not found: QMessageBox.warning(self, "提示", "没有找到任何匹配项!") if __name__ == '__main__': app = QApplication([]) ex = Example() ex.show() app.exec_() ``` 运行该示例程序,在QTableView输入要查找的关键字并点击查找按钮,即可将包含该关键字的行选。如果没有找到任何匹配项,则会弹出一个消息框告诉用户没有找到任何匹配项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值