QT/C ++: الحصول على البيانات في خلية معينة في QTableView

StackOverflow https://stackoverflow.com/questions/4236942

  •  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() + "*";
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top