• 8686阅读
  • 4回复

QTableView 获取选中行内容并赋值给另一个tableview的问题 [复制链接]

上一主题 下一主题
离线snow_rain
 
只看楼主 倒序阅读 楼主  发表于: 2011-12-19
我做了一个界面,有两个tableview,想获取其中一个tableview中选中行的内容,然后把选中行赋值给另一个tableview,总是只取到第一列数据,困惑中,求高手解救。。。

主要代码如下:
QItemSelectionModel *selectionModel =ui->tableView_2->selectionModel();
    QModelIndexList indexes = selectionModel->selectedIndexes();
    QModelIndex index;
    QStandardItem *newItem=0;
    if(indexes.count()==0)
      {
             QMessageBox::warning(this,tr("添加子节点"),tr("请选择要添加的节点!"), QMessageBox::Ok);
      }
        else
        {
         if(indexes.count()!=4){
            QMessageBox::warning(this,tr("添加子节点"),tr("每次只能添加一个节点!"), QMessageBox::Ok);
            }else{
                foreach(index, indexes) {
                    int col=index.column();
                    newItem = new QStandardItem(index.data().toString());
                    model->setItem(row,col,newItem);
                    model->setHeaderData(0, Qt::Horizontal, tr("长地址"));
                    model->setHeaderData(1, Qt::Horizontal, tr("名称"));
                    model->setHeaderData(2, Qt::Horizontal, tr("网络号"));
                    model->setHeaderData(3, Qt::Horizontal, tr("短地址"));
                    ui->tableView->setModel(model);
               }

        其中model 是一个QStandardItemModel,row是model也就是tableview的现有行数
离线snow_rain
只看该作者 1楼 发表于: 2011-12-19
。。。求QT高手们指点迷津。。。
离线snow_rain
只看该作者 2楼 发表于: 2011-12-19
庞大的QT论坛,来个高手指点一下吧
离线snow_rain
只看该作者 3楼 发表于: 2011-12-20
额。。。最终还是木有高手相助。
但是。。。这个代码的确没问题,是其他代码的干扰导致错误产生的。。。
离线XChinux

只看该作者 4楼 发表于: 2012-01-01
没细看上面的代码,但基本逻辑是这样的:
通过selectionModel()->selectedRows()来获取选中行的索引列表,这样选中的行号就都获取到了,然后再通过这个行号就能获取到所有的记录了。

QModelIndexList idxs = ui->tableView->selectionModel()->selectedRows();
for (int i = 0; i < idxs.size(); i++)
{
    int row = idxs[ i ].row();
    QString strCol1 = model->item(row, 0)->data(Qt::DisplayRole).toString();
    QString strCol2 = model->item(row, 1)->data(Qt::DisplayRole).toString();
    QString strCol3 = model->item(row, 2)->data(Qt::DisplayRole).toString();
    QString strCol4 = model->item(row, 3)->data(Qt::DisplayRole).toString();
}
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个