QT/C ++: الحصول على البيانات في خلية معينة في QTableView
-
26-09-2019 - |
سؤال
أحاول الحصول على النص في خلية معينة في أ QTableView
. علي سبيل المثال:
QString codestring = "*" + ui->tblInventory->indexAt(QPoint(0,2)).data().toString() + "*";
هذا يجب أن يحصل على النص في الخلية في العمود 0 الصف 2 في بلدي QTableView
. المشكلة هي ، هذا ليس ما تفعله!. بغض النظر عن الحجج التي نمر بها إلى QPoint()
في ال indexAt()
, ، أحصل على النص في الخلية 0،0. ليس لدي أي فكرة لماذا هذا ... أي مساعدة؟ شكرًا!
تعديل
لقد جربت هذا أيضًا:
QString codestring = "*" + ui->tblInventory->model()->data(ui->tblInventory->indexAt(QPoint(0,2))).toString() + "*";
تحرير 2] أحاول معرفة ما يجري ، وضعت في هذا السطر من الكود:
qDebug()<< ui->tblInventory->indexAt(QPoint(2,2)).row() << " and " << ui->tblInventory->indexAt(QPoint(2,2)).column();
يجب أن تحصل على QModelIndex
في الخلية 2،2 وإخراج صفه وعموده ، والتي يجب أن تكون بالطبع 2 و 2. ومع ذلك ، أحصل على 0 و 0! لذلك يبدو أن هذا قد يكون مشكلة مع QTableView::indexAt()
, ، سواء كان استخدامي أو نوع من الأخطاء. يمكن لأي شخص أن يلقي بعض الضوء؟
المحلول
حل مع:
ui->tblInventory->model()->data(ui->tblInventory->model()->index(0,2)).toString()
لست متأكدًا تمامًا من سبب عدم عمل ما سبق ، لكن هذا لا يعمل. شكرا للمساعدة.
نصائح أخرى
هذا يعمل أيضًا وهو أقصر:
QModelIndex index = model->index(row, col, QModelIndex());
ui->tblInventory->model()->data(index).toString();
(model
أعلى هو QabstractModel الذي يرتبط بهذا tblInventory
)
افحص ال data()
الوظيفة التي يوفرها النموذج الذي يستخدمه QTableView الخاص بك ، ربما يتم ملاحظة التأثير الذي تصفه بسبب وجود خطأ فيه.
جرب هذا:
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() + "*";