Guest User

newssqlmodel.h

a guest
Dec 26th, 2015
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.36 KB | None | 0 0
  1. #ifndef NEWSSQLMODEL
  2. #define NEWSSQLMODEL
  3.  
  4. #include <QSqlQueryModel>
  5.  
  6. class NewsSqlModel : public QSqlQueryModel
  7. {
  8.     Q_OBJECT
  9. public:
  10.     explicit NewsSqlModel(QObject *parent);
  11.     void refresh();
  12.     QVariant data(const QModelIndex &index, int role) const;
  13.  
  14. private:
  15.     const static char* COLUMN_NAMES[];
  16.     const static char* SQL_SELECT;
  17. };
  18.  
  19. const char* NewsSqlModel::COLUMN_NAMES[] = {
  20.     "title",
  21.     "text"
  22. };
  23. const char* NewsSqlModel::SQL_SELECT =
  24.     "SELECT title, text FROM news";
  25.  
  26. NewsSqlModel::NewsSqlModel(QObject *parent) :
  27.     QSqlQueryModel(parent)
  28. {
  29.     int idx = 0;
  30.     QHash<int, QByteArray> roleNames;
  31.     while( COLUMN_NAMES[idx]) {
  32.         roleNames[Qt::UserRole + idx + 1] = COLUMN_NAMES[idx];
  33.         idx++;
  34.     }
  35. //    setRoleNames(roleNames);
  36.     refresh();
  37. }
  38.  
  39. QVariant NewsSqlModel::data(const QModelIndex &index, int role) const
  40. {
  41.     QVariant value = QSqlQueryModel::data(index, role);
  42.     if(role < Qt::UserRole)
  43.     {
  44.         value = QSqlQueryModel::data(index, role);
  45.     }
  46.     else
  47.     {
  48.         int columnIdx = role - Qt::UserRole - 1;
  49.         QModelIndex modelIndex = this->index(index.row(), columnIdx);
  50.         value = QSqlQueryModel::data(modelIndex, Qt::DisplayRole);
  51.     }
  52.     return value;
  53. }
  54.  
  55. void NewsSqlModel::refresh()
  56. {
  57.     this->setQuery(SQL_SELECT);
  58. }
  59.  
  60. #endif // NEWSSQLMODEL
Advertisement
Add Comment
Please, Sign In to add comment