Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
3 / 3 / 2
Регистрация: 13.10.2009
Сообщений: 93
1

Редактирование поля QTableView (работа с моделью QStandardItemModel)

15.02.2017, 18:28. Просмотров 1314. Ответов 4
Метки нет (Все метки)

Есть модель QStandardItemModel и таблица QTableView. Подскажите пожалуйста, как реализовать проверку редактирования элемента TableView? то есть, если какое-либо поле таблицы было изменено, то выводить qDebug()-ом "ок". Не важно, что происходит после редактирования элемента, главное осуществить анализ редактирования ячейки..
вот код:
C++ (Qt)
1
2
3
4
5
6
7
8
9
QStandardItemModel model(4, 4);
for (int row = 0; row < 4; ++row) {
    for (int column = 0; column < 4; ++column) {
        QStandardItem *item = new QStandardItem(QString("%0, %1").arg(row).arg(column));
        model.setItem(row, column, item);
    }
}
 
ui->tableView->setModel(model);
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.02.2017, 18:28
Ответы с готовыми решениями:

Редактирование таблицы QStandardItemModel и QTableView
Не могу понять как изменить вот эти значения см. рис. http://yadi.sk/d/xgsMOPt0RD2by допустим на...

ChekBox в QTableView с моделью
И так понадобилась мне банальная функциональность, наличие в QtableView chekBox в определенном...

PyQt работа QStandardItemModel
Есть виджет выглядящий как на при крепленой картинке. Мне нужно изменять картинки у любого из...

QTableView. Редактирование ячейки
Здравствуйте. При выводе обычных данных в TableView ячейки редактируются, но, если выводить в...

4
65 / 65 / 18
Регистрация: 31.03.2015
Сообщений: 253
15.02.2017, 18:41 2
C++ (Qt)
1
void QAbstractItemModel::dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles = QVector<int> ())
?
0
Эксперт С++
1434 / 902 / 775
Регистрация: 06.02.2016
Сообщений: 2,374
Записей в блоге: 20
Завершенные тесты: 5
15.02.2017, 18:42 3
Как вариант, написать класс который будет отслеживать изменения
changer.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
#pragma once
#include <QtWidgets>
#include <QtCore>
class Changer:public QObject{
    Q_OBJECT
public:
    Changer()=default;
public slots:
    void emDebug(){
        qDebug()<<"Ok";
    }
};
main.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <QApplication>
#include <QtWidgets>
#include <QtCore>
#include "changer.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QStandardItemModel model(4, 4);
    for (int row = 0; row < 4; ++row) {
        for (int column = 0; column < 4; ++column) {
            QStandardItem *item = new QStandardItem(QString("%0, %1").arg(row).arg(column));
            model.setItem(row, column, item);
        }
    }
    QTableView *tableView=new QTableView;
    tableView->setModel(&model);
    Changer ch;
    QObject::connect(&model,SIGNAL(dataChanged(QModelIndex ,QModelIndex )),&ch,SLOT(emDebug()));
    tableView->show();
    return a.exec();
}
0
Pied Piper
235 / 226 / 57
Регистрация: 15.01.2013
Сообщений: 855
Завершенные тесты: 1
15.02.2017, 19:29 4
Peoples, зачем класс городить с одним слотом если можно лямбду передать?
0
Эксперт С++
1434 / 902 / 775
Регистрация: 06.02.2016
Сообщений: 2,374
Записей в блоге: 20
Завершенные тесты: 5
15.02.2017, 19:36 5
Или же без класса, просто через лямбду
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
QApplication a(argc, argv);
    QStandardItemModel model(4, 4);
    for (int row = 0; row < 4; ++row) {
        for (int column = 0; column < 4; ++column) {
            QStandardItem *item = new QStandardItem(QString("%0, %1").arg(row).arg(column));
            model.setItem(row, column, item);
        }
    }
    QTableView *tableView=new QTableView;
    tableView->setModel(&model);
    auto lam=[](){qDebug()<<"Ok";};  // лямбда 
    QObject::connect(&model,&QStandardItemModel::dataChanged,lam);
    tableView->show();
Добавлено через 5 минут
C++ (Qt)
1
QObject::connect(&model,&QAbstractItemModel::dataChanged,[](){qDebug()<<"Ok";});
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.02.2017, 19:36

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Редактирование данных в QTableView
Сабж. Есть своя модель наследуемая от QAbstractTableModel. Переопределены ф-ии data, setData....

QTableView запрет на редактирование колонки
Доброго времени суток. Имеется база данных,которая хранит 5 таблиц. При помощи QComboBox реализовал...

Работа с моделью
Имеется такой вот кусок кода @parent_student = ParentStudent.find_by(parent_id:...

Работа с моделью представления
имею модели: public class Album { public int Id { get; set; } public...


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

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

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