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

Qt

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

Qml и QStandartItemModel - C++ Qt

06.01.2017, 09:23. Просмотров 200. Ответов 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);
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2017, 09:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Qml и QStandartItemModel (C++ Qt):

Подсветка QML элементов QML-ного плагина в QtCreator в случае нахождения QML файлов плагина в ресурсах! - C++ Qt
Здравствуйте! Если сделать плагин для QML и подключить его в основном проекте ну как - то так: import MiracleStudio.SkyControls 1.0 ...

QMl/QT при нажатии на кнопку должен окрыться другой qml файл - C++ Qt
Додал anchors Вот что я сделал: import QtQuick 2.5 import QtQuick.Controls 1.4 ApplicationWindow { id: applicationWindow...

Как подключить QML-файл в C++ по моде, а также получить ссылки на QML-элементы в C++ - C++ Qt
Читал в интернете, как подключать QML-файлы. Кто-то использует QQmlView, кто-то QQmlApplicationEngine, а ещё приводят связку QQmlEngine и...

Работа с QStandartItemModel - C++ Qt
Не получается заполнить каждую ячейку таблица, только при передачи 0 в первый параметр методы insertRows() и insertCounts() таблицей...

QStandartItemModel & QTableView - C++ Qt
Здравствуйте знатоки, очень нужен чужой опыт! =) Я переписываю одну свою старую программу где использовал QItem &amp; QTableWidget, а сейчас я...

qml - что из себя представляет qml - C++ Qt
Решил написать игру на Qt,выбор остановился на танчиках.Посмотрел примеры и понял что все игры ,что там даны написаны с помощью...

2
Dmitriy_M
1356 / 1237 / 114
Регистрация: 20.03.2009
Сообщений: 4,429
Записей в блоге: 11
06.01.2017, 15:49 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
При беглом осмотре roleNames иметь сигнатуру:
C++ (Qt)
1
virtual QHash<int, QByteArray> roleNames() const;
и должна находится в секции public
1
DVyacheslavN
1 / 1 / 0
Регистрация: 28.11.2015
Сообщений: 49
07.01.2017, 21:24  [ТС] #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 забыл ((( невнимательность
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2017, 21:24
Привет! Вот еще темы с ответами:

Запись и считывание данных в QStandartItemModel - C++ Qt
Мне нужно записать в поле таблицы QStandartItemModel свою структуру и потом считать ее обратно. Как это правиль сделать. Причем данные...

Очистка содержимого QTableView\QStandartItemModel - C++ Qt
И снова я с вопросами по таблице. Переход с QtableWidget на QtableView прошел удачно, все что надо работает, ну почти все.Простой пример....

QML вызов другого qml - C++ Qt
Всем привет. Название темы немного неверное. Вообщем проблема такая. Делаю игру на qml, и есть main_menu.qml, далее мне необходимо вызвать...

QTreeView & QStandartItemModel добавление родителей и дочерних узлов - C++ Qt
Добрый день. Помогите пожалуйста разобраться. Что делаю - разбираю xml док и данные из него пихаю в массив структур. Что надо -...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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