Форум программистов, компьютерный форум CyberForum.ru

Qt

Войти
Регистрация
Восстановить пароль
 
DVyacheslavN
1 / 1 / 0
Регистрация: 28.11.2015
Сообщений: 46
#1

Qml и QStandartItemModel - C++ Qt

06.01.2017, 09:23. Просмотров 175. Ответов 2

Здравствуйте, Не могу разобраться в чем проблема :

создаю модель заранее не известно сколько строк
main.cpp
C++ (Qt)
1
2
MyStandartModel *model=new MyStandartModel();
engine.rootContext()->setContextProperty("discret_model",model);

потроха модели )
унаследовал , добавил роли

mystandartmodel.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#ifndef MYSTANDARTMODEL_H
#define MYSTANDARTMODEL_H
#include <QStandardItemModel>
#include <QObject>
 
 
 
 
class MyStandartModel : public QStandardItemModel
{
    Q_OBJECT
public:
    enum myRoles {
        daty= Qt::UserRole+1,
        alias
    };
 
    MyStandartModel();
    QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
protected :
    QHash <int, QByteArray> roleNames();
};
 
 
#endif // MYSTANDARTMODEL_H
mystandartmodel.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "mystandartmodel.h"
 
MyStandartModel::MyStandartModel() : QStandardItemModel()
{
 
}
 
QVariant MyStandartModel::data(const QModelIndex &index, int role) const
{
    int colum = role - Qt::UserRole-1;
    QModelIndex myindex= this->index(index.row(),colum,QModelIndex());
    return QStandardItemModel::data(myindex,Qt::DisplayRole);
//   return QStandardItemModel::data(index,role);
}
 
QHash<int, QByteArray> MyStandartModel::roleNames()
{
    QHash<int, QByteArray> roles= QStandardItemModel::roleNames();
 
    roles [daty]= "daty";
    roles [alias]="alias";
    return roles;
}
ну а тут все понятно )
Qml
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
    ListView
    {
        anchors.top: buttonUS.bottom
        anchors.left: parent.left
        anchors.right: parent.right
        anchors.bottom: parent.bottom
        id: listvi1
        delegate:  discret_delegate
        model : discret_model
 
    }
 
    Component
    {
 
        id :discret_delegate
 
        Item {
 
            objectName: "itim"
            anchors.left: parent.left
            anchors.right: parent.right
            height: 100
            property string my_alias: qsTr("alias")
 
            Rectangle
            {
                anchors.fill: parent
                objectName: "rect"
                color : blue
                Row
                {
                    height: 50
                    anchors.top: parent.top
                    //anchors.left: parent.left
                    //anchors.right: parent.right
 
                    Switch
                    {
                        objectName: nameObj+"S"
                        anchors.top: parent.top
                        anchors.bottom:parent.bottom
                        anchors.left: textid.right
                        anchors.right: (parent.right * 5) / 10
                        checked: {
 
 
                        }
 
                      text: daty< ------------------------------------------ не работает (
                        onClicked:  {
 
 
 
                        }
                    }
                }
            }
        }
    }
по кнопке добавляю в модель строки
C++ (Qt)
1
2
3
4
    QStandardItem *it=new QStandardItem("fdsfds");
    it->setData("valu",MyStandartModel::daty);
    it->setData("valub",MyStandartModel::daty);
    modis->appendRow(it);
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2017, 09:23     Qml и QStandartItemModel
Посмотрите здесь:

C++ Qt Qt, Qt Quick, QML
QStandartItemModel & QTableView C++ Qt
C++ Qt qml webkit
Ошибка с Qml C++ Qt
ListView в qml C++ Qt
C++ Qt Запись и считывание данных в QStandartItemModel
C++ Qt Очистка содержимого QTableView\QStandartItemModel
C++ Qt QTreeView & QStandartItemModel добавление родителей и дочерних узлов
Работа с QStandartItemModel C++ Qt
C++ Qt синусоида QML+C++
Qml slider C++ Qt
C++ Qt Qml + widgets

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dmitriy_M
1339 / 1220 / 111
Регистрация: 20.03.2009
Сообщений: 4,352
Записей в блоге: 11
06.01.2017, 15:49     Qml и QStandartItemModel #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
При беглом осмотре roleNames иметь сигнатуру:
C++ (Qt)
1
virtual QHash<int, QByteArray> roleNames() const;
и должна находится в секции public
DVyacheslavN
1 / 1 / 0
Регистрация: 28.11.2015
Сообщений: 46
07.01.2017, 21:24  [ТС]     Qml и QStandartItemModel #3
Исправил не помогло

Добавлено через 1 минуту
http://evileg.com/ru/post/189/ кстати что protected взял из примера

Добавлено через 43 минуты
C++ (Qt)
1
2
3
4
    QStandardItem *it=new QStandardItem("fdsfds");
    it->setData("valu",MyStandartModel::daty);
    it->setData("valub",MyStandartModel::daty);
    modis->appendRow(it);
здесь что то не то

Добавлено через 6 минут
блин еще нашел проблему когда display то метод data вызывается а когда daty то вообще ноль эмоций

Добавлено через 3 минуты
C++ (Qt)
1
virtual QHash<int, QByteArray> roleNames() const
const забыл ((( невнимательность
Yandex
Объявления
07.01.2017, 21:24     Qml и QStandartItemModel
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru