14
मैं एक QAbstractTableModel प्रदर्शित करने के लिए QTableView
उपयोग कर रहा हूँ:कॉलम द्वारा QTableView को कैसे क्रमबद्ध करें?
#include <QtGui/QApplication>
#include <QAbstractTableModel>
#include <QTableView>
class TestModel : public QAbstractTableModel
{
public:
int rowCount(const QModelIndex &parent = QModelIndex()) const
{
return 2;
}
int columnCount(const QModelIndex &parent = QModelIndex()) const
{
return 2;
}
QVariant data(const QModelIndex &index, int role) const
{
switch (role)
{
case Qt::DisplayRole:
{
return 4 - index.row() + index.column();
}
}
return QVariant();
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTableView table;
TestModel model;
table.setModel(&model);
table.setSortingEnabled(true);
table.sortByColumn(0, Qt::AscendingOrder);
table.reset();
table.show();
return a.exec();
}
समस्या यह है कि परिणाम बिल्कुल वैसा ही है है जब मैं का उपयोग करें:
table.sortByColumn(0, Qt::AscendingOrder);
या
table.sortByColumn(0, Qt::DescendingOrder);
या
table.sortByColumn(1, Qt::AscendingOrder);
या
table.sortByColumn(1, Qt::DescendingOrder);
क्या मैं गलत कर रहा हूँ?
धन्यवाद! यह काम करता हैं! लेकिन मैं क्या गलत कर रहा था? मेरा कोड क्यों काम नहीं करता है? मैंने QTableView और QAbstractTableModel दोनों के दस्तावेज़ों को ऊपर और नीचे पढ़ा है, लेकिन क्यों नहीं पता चला। –
यदि मैं इसे सही ढंग से समझता हूं, तो QTableView केवल QAbstractTableModel के खाली सॉर्ट() फ़ंक्शन को कॉल करता है? यह अपने आप पर कोई सोटिंग नहीं करता है? –
हां बिल्कुल। QSqlTableModel में एक प्रकार का कार्यान्वयन iirc है, इसलिए सॉर्टिंग प्रॉक्सी मॉडल के बिना वहां काम करता है। हालांकि, जैसा कि आप अपने मॉडल का उपयोग कर रहे हैं, आपको एक QSortFilterProxyModel की आवश्यकता है - जैसा कि नाम से पता चलता है - इसमें एक सॉर्टिंग कार्यान्वयन भी है। –