2013-04-23 8 views
5

में एक पंक्ति का चयन करते समय एक सिग्नल/एसएलओटी कैसे बनाएं मेरे पास QTableView है जो GUI पर अपना मॉडल ठीक से दिखा रहा है। हालांकि, मैं एक "सिग्नल/एसएलओटी" बनाना चाहता हूं जो काम करता है जब मैं QTableView से एक पंक्ति का चयन करता हूं।क्यूटी: सी ++: QTableView

मैं यह कैसे कर सकता हूं?

उत्तर

2

चयन मॉडल से currentRowChanged(const QModelIndex & current, const QModelIndex & previous) सिग्नल का उपयोग करें (docs)।

2

प्रलेखन QAbstractItemView https://qt-project.org/doc/qt-4.7/qabstractitemview.html

शून्य QAbstractItemView सक्रिय (स्थिरांक QModelIndex & सूचकांक) [संकेत]

जब आइटम सूचकांक द्वारा निर्दिष्ट उपयोगकर्ता द्वारा सक्रिय है यह संकेत उत्सर्जित होता है देखें। वस्तुओं को सक्रिय करने के लिए मंच पर निर्भर करता है; उदाहरण के लिए, एकल- या आइटम को डबल-क्लिक करके, या वापसी या दबाकर आइटम चालू होने पर कुंजी दर्ज करें।

और का उपयोग QModelIndex :: पंक्ति()

+1

सक्रियण चयन के समान नहीं है। – cmannett85

3

आप इस तरह से यह कर सकते हैं:

connect(ui->tableView->selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)), 
      SLOT(slotSelectionChange(const QItemSelection &, const QItemSelection &)) 
      ); 

और स्लॉट होगा:

void MainWindow::slotSelectionChange(const QItemSelection &, const QItemSelection &) 
{ 
      QModelIndexList selection = ui->tableView->selectionModel()->selectedRows();//Here you are getting the indexes of the selected rows 

      //Now you can create your code using this information 
} 

मुझे आशा है कि यह कर सकते हैं आपकी मदद।