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

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

15.02.2017, 18:28. Просмотров 736. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2017, 18:28
Ответы с готовыми решениями:

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

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

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

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

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

4
yarko
64 / 64 / 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
Peoples
1379 / 861 / 757
Регистрация: 06.02.2016
Сообщений: 2,281
Записей в блоге: 18
Завершенные тесты: 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
ArmanPrestige
Pied Piper
233 / 224 / 57
Регистрация: 15.01.2013
Сообщений: 855
Завершенные тесты: 1
15.02.2017, 19:29 4
Peoples, зачем класс городить с одним слотом если можно лямбду передать?
0
Peoples
1379 / 861 / 757
Регистрация: 06.02.2016
Сообщений: 2,281
Записей в блоге: 18
Завершенные тесты: 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
15.02.2017, 19:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2017, 19:36

Удаление поля из QTableview
Доброго времени суток, необходимо написать слот который удалял бы поля из QSqlTableModel пробовал...

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

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


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

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

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