2010-11-21 9 views
14

में किसी निश्चित सेल पर डेटा प्राप्त करना मैं QTableView में किसी निश्चित सेल पर टेक्स्ट प्राप्त करने का प्रयास कर रहा हूं। उदाहरण के लिए:क्यूटी/सी ++: QTableView

QString codestring = "*" + ui->tblInventory->indexAt(QPoint(0,2)).data().toString() + "*"; 

यह मेरा QTableView में स्तंभ 0 पंक्ति 2 में सेल पर पाठ मिलना चाहिए। समस्या यह है कि यह नहीं कर रहा है! indexAt() में तर्कों के बावजूद मैं QPoint() में जाता हूं, मुझे सेल 0,0 पर टेक्स्ट मिलता है। मुझे नहीं पता कि यह क्यों है ... कोई मदद? धन्यवाद!

[संपादित करें]
मैं भी इस की कोशिश की है:

qDebug()<< ui->tblInventory->indexAt(QPoint(2,2)).row() << " and " << ui->tblInventory->indexAt(QPoint(2,2)).column(); 
:

QString codestring = "*" + ui->tblInventory->model()->data(ui->tblInventory->indexAt(QPoint(0,2))).toString() + "*"; 

[संपादित करें 2] पता लगाने के लिए क्या हो रहा है की कोशिश कर रहा है, मैं कोड की इस पंक्ति में डाल

इसे QModelIndex सेल 2,2 पर प्राप्त करना चाहिए और इसकी पंक्ति और उसके कॉलम को आउटपुट करना चाहिए, जो निश्चित रूप से 2 और 2 होना चाहिए। हालांकि, मुझे 0 और 0 मिलते हैं! तो ऐसा लगता है कि यह QTableView::indexAt() के साथ एक समस्या हो सकती है, चाहे वह मेरा उपयोग या कुछ प्रकार की बग हो। क्या कोई इस पर थोड़ा प्रकाश डाल सकता है?

+0

मेरा उत्तर की जाँच करें। – SIFE

+0

indexAt (QPoint (0,2) विजेट स्थिति X = 0 वाई = 2 पर किसी सेल के QModelIndex को वापस नहीं करेगा, पंक्ति/कॉल 0,2 –

उत्तर

21

साथ समाधान किया गया:

ui->tblInventory->model()->data(ui->tblInventory->model()->index(0,2)).toString() 

काफी सुनिश्चित नहीं हैं कि क्यों से काम नहीं होता है, लेकिन इस करता है। सहायता के लिए धन्यवाद।

+1

मुझे लगता है कि ऐसा इसलिए है क्योंकि क्यूपॉइंट का उपयोग कर्सर की कुछ स्थिति के आधार पर मूल्य प्राप्त करने के लिए किया जाता है। मैं सही क्लिक के आधार पर सेल मान प्राप्त करने के लिए QPoint का उपयोग कर रहा हूं। – amree

+2

indexAt() इंडेक्स को वापस देता है दृश्य में एक निश्चित * पिक्सेल स्थिति *। (0,2) शीर्ष सीमा से केवल दो पिक्सेल है, और इस प्रकार सूचकांक (0,0) के अनुरूप है। बीटीडब्ल्यू, ui-> tblInventory-> मॉडल() -> अनुक्रमणिका (0,2) .डेटा()। ToString() भी काम करता है। –

0

अपने QTableView का उपयोग करने वाले मॉडल द्वारा प्रदान किए गए data() फ़ंक्शन को जांचें, आपके द्वारा वर्णित प्रभाव शायद उसमें एक बग के कारण देखा गया है।

+0

नहीं क्या आप थोड़ा और समझा सकते हैं? मैं QSqlQueryModel का उपयोग कर रहा हूं। यह भी प्रयास किया गया: QString codestring = "*" + ui-> tblInventory-> मॉडल() -> डेटा (ui-> tblInventory-> indexAt (QPoint (0,2)))। toString() + "*"; लेकिन यह या तो काम नहीं करता है। – Joseph

0

इस प्रयास करें:

QModelIndex index = ui->tblInventory->indexAt(p); // p is a QPoint you get from some where, may be you catch right click 
QString codestring = "*" + index->data().toString() + "*"; 
9

यह एक काम भी है और यह कम है:

QModelIndex index = model->index(row, col, QModelIndex()); 

ui->tblInventory->model()->data(index).toString(); 

(model इस्तेमाल किया शीर्ष QAbstractModel है कि इस tblInventory के लिए बाध्य है)

संबंधित मुद्दे