2013-09-28 5 views
7

से किसी चयनित पंक्ति के प्रत्येक सेल से डेटा प्राप्त करें क्या तालिका दृश्य से चयनित पंक्ति से डेटा प्राप्त करने का कोई तरीका है? मैंने QModelIndexList ids = ui->tableView->selectionModel()->selectedRows(); का उपयोग किया है जो चयनित पंक्तियों के सूचकांक की एक सूची देता है। मुझे इंडेक्स की आवश्यकता नहीं है। मुझे चयनित पंक्ति के प्रत्येक सेल से डेटा चाहिए।क्यूटी सी ++ एक QTableView

+0

प्रयास करें कर सकते हैं? – vahancho

उत्तर

2
QVariant data(const QModelIndex& index, int role) const 

डेटा लौटने के लिए उपयोग किया जा रहा है। यदि आप स्वयं QModelIndex पंक्ति और स्तंभ के आधार पर यहां यह कर और कुछ कंटेनर से यह पुन: प्राप्त करने, हो सकता है

std::vector<std::vector<MyData> > data; 

कर रहे हैं आप इस तरह के मानचित्रण को परिभाषित करने और के साथ बातचीत को संभालने के लिए data() और setData() कार्यों में इसका इस्तेमाल करने के लिए है पाने के लिए की जरूरत है अंतर्निहित मॉडल डेटा।

TreeItem *item = static_cast<TreeItem*>(index.internalPointer()); 
: तो आप अगले सूचक की static_cast QModelIndex.internalPointer() समारोह से लौटे का उपयोग कर प्रत्येक डेटा के लिए सूचक प्राप्त कर सकते हैं

वैकल्पिक रूप से QAbstractItemModel और QTreeView, जिस तरह से प्रत्येक QModelIndex करने के लिए अपने वर्ग यानी TreeItem आवंटित करने के लिए प्रदान करता है

// sets the role data for the item at <index> to <value> and updates 
// affected TreeItems and ModuleInfo. returns true if successful 
// otherwise returns false 
bool ModuleEnablerDialogTreeModel::setData(const QModelIndex & index, 
    const QVariant & value, int role) { 
    if (role 
     == Qt::CheckStateRole&& index.column()==ModuleEnablerDialog_CheckBoxColumn) { 
    TreeItem *item = static_cast<TreeItem*>(index.internalPointer()); 
    Qt::CheckState checkedState; 
    if (value == Qt::Checked) { 
     checkedState = Qt::Checked; 
    } else if (value == Qt::Unchecked) { 
     checkedState = Qt::Unchecked; 
    } else { 
     checkedState = Qt::PartiallyChecked; 
    } 
    //set this item currentlyEnabled and check state 
    if (item->hierarchy() == 1) { // the last level in the tree hierarchy 
     item->mModuleInfo.currentlyEnabled = (
      checkedState == Qt::Checked ? true : false); 
     item->setData(ModuleEnablerDialog_CheckBoxColumn, checkedState); 
     if (mRoot_Systems != NULL) { 
     updateModelItems(item); 
     } 
    } else { // every level other than last level 
     if (checkedState == Qt::Checked || checkedState == Qt::Unchecked) { 
     item->setData(index.column(), checkedState); 
     // update children 
     item->updateChildren(checkedState); 
     // and parents 
     updateParents(item); 

:

ऐसा है तो आप कुछ मैपिंग बनाते हैं

7

आप `QModelIndex :: डेटा (पूर्णांक भूमिका)` भावना बनाता है का उपयोग करते हुए इस

int rowidx = ui->tblView->selectionModel()->currentIndex().row(); 
ui->txt1->setText(model->index(rowidx , 0).data().toString()); 
ui->txt2->setText(model->index(rowidx , 1).data().toString()); 
ui->txt3->setText(model->index(rowidx , 2).data().toString()); 
ui->txt4->setText(model->index(rowidx , 3).data().toString()); 
1
Try this for getting data. selectedRows(0) indicates first column of selected rows, selectedRows(1) indicates second column of selected rows row likewise 

QItemSelectionModel *select = ui->existingtable->selectionModel(); 
qDebug()<<select->selectedRows(0).value(0).data().toString(); 
qDebug()<<select->selectedRows(1).value(0).data().toString(); 
qDebug()<<select->selectedRows(2).value(0).data().toString(); 
qDebug()<<select->selectedRows(3).value(0).data().toString();