Название: Отключение стандартных сигналов у виджетов Отправлено: bez_glaz от Февраль 28, 2012, 10:49 Добрый день.
В конструкторе формы прописываю Код: disconnect(ui->ListObj,SIGNAL(doubleClicked(QModelIndex))); Код: modelObj = new QSqlTableModel(); Название: Re: Отключение стандартных сигналов у виджетов Отправлено: Igore от Февраль 28, 2012, 11:37 Для того чтобы нельзя было редактировать из модели не возвращай флаг Qt::ItemIsEditable
Код: QAbstractItemModel::flags ( const QModelIndex & index ) const А выделение тебе придется самому обрабатывать, сделай слот на двойной клик в котором будешь снимать выделение, или installEventFilter и как то определить double click, или отнаследоваться от View и переопределить Код: void QAbstractItemView::mouseDoubleClickEvent Название: Re: Отключение стандартных сигналов у виджетов Отправлено: bez_glaz от Февраль 28, 2012, 12:22 Для того чтобы нельзя было редактировать из модели не возвращай флаг Qt::ItemIsEditable Редактрование из модели вообще не трогаем, т.к. если уберём обработку дабл клика, то и редактирования не будит.Код: QAbstractItemModel::flags ( const QModelIndex & index ) const А выделение тебе придется самому обрабатывать, сделай слот на двойной клик в котором будешь снимать выделение, или installEventFilter и как то определить double click, или отнаследоваться от View и переопределить Код: void QAbstractItemView::mouseDoubleClickEvent Если я создам сигнал, который будит по двойному клику снимать выделение, как будит системно перекрываться дефолтный сигнал ? И вообще у меня возник такой вопрос, реализация связи двойной клик - редактирование TableView это слот сигналый коннект, который прописан где-то по умолчанию или же что-то другое ? Название: Re: Отключение стандартных сигналов у виджетов Отправлено: kambala от Февраль 28, 2012, 13:33 Для того чтобы нельзя было редактировать из модели не возвращай флаг Qt::ItemIsEditable это - правильный подход, а не отключение сигналов.Код: QAbstractItemModel::flags ( const QModelIndex & index ) const И вообще у меня возник такой вопрос, реализация связи двойной клик - редактирование TableView это слот сигналый коннект, который прописан где-то по умолчанию или же что-то другое ? в QTableView реализован и действие зависит от возможности редактирования моделиНазвание: Re: Отключение стандартных сигналов у виджетов Отправлено: Странник от Февраль 28, 2012, 13:43 достаточно флагов Qt::ItemIsSelectable и Qt::ItemIsEditable не возвращать для нужных элементов.
Название: Re: Отключение стандартных сигналов у виджетов Отправлено: GreatSnake от Февраль 28, 2012, 15:00 Управлять режимом редактирования можно через:
Код
Название: Re: Отключение стандартных сигналов у видже Отправлено: bez_glaz от Февраль 28, 2012, 15:21 В Qt ещё не силён, пока остановимся на флагах.
Порылся тут на форуме нашёл Код: Qt::ItemFlags TreeModel::flags(const QModelIndex &index) const Код: Qt::ItemFlags QAbstractItemModel::flags(const QModelIndex &index) const Ещё нашёл по флагам что-то типо Код: setWindowFlags(Qt::WindowMinimizeButtonHint); Название: Re: Отключение стандартных сигналов у видже&# Отправлено: mutineer от Февраль 28, 2012, 15:27 Попробывал заменить на Код: Qt::ItemFlags QAbstractItemModel::flags(const QModelIndex &index) const А где ты его заменял? Название: Re: Отключение стандартных сигналов у виджетов Отправлено: bez_glaz от Февраль 28, 2012, 15:28 Управлять режимом редактирования можно через: Спасибо=)Код
Тригеры оказались полегче =) Код: ui->ListObj->setEditTriggers(QAbstractItemView::NoEditTriggers); но насчёт флагов хотелось бы уточнить, всё таки полезно и второй метод знать! Название: Re: Отключение стандартных сигналов у видже&# Отправлено: bez_glaz от Февраль 28, 2012, 15:28 Попробывал заменить на Код: Qt::ItemFlags QAbstractItemModel::flags(const QModelIndex &index) const А где ты его заменял? Название: Re: Отключение стандартных сигналов у видже Отправлено: mutineer от Февраль 28, 2012, 15:29 Попробывал заменить на Код: Qt::ItemFlags QAbstractItemModel::flags(const QModelIndex &index) const А где ты его заменял? В каком классе ты это менял? Не в QAbstractItemModel же Название: Re: Отключение стандартных сигналов у видже&# Отправлено: bez_glaz от Февраль 28, 2012, 15:38 Попробывал заменить на Код: Qt::ItemFlags QAbstractItemModel::flags(const QModelIndex &index) const А где ты его заменял? В каком классе ты это менял? Не в QAbstractItemModel же В классе главного окна, в объекте класса главного окна, если так более понятно, а где ещё вставлять этот кодинг ? Я указал же все пространства имён перед использованием!? Название: Re: Отключение стандартных сигналов у видже Отправлено: mutineer от Февраль 28, 2012, 15:39 Возвращать флаги надо из метода flags класса-наследника QAbstractItemModel, экземпляр которого используется в качестве модели
Название: Re: Отключение стандартных сигналов у виджетов Отправлено: GreatSnake от Февраль 28, 2012, 15:48 т.е. тебе нужно отнаследоваться от QSqlTableModel и уже в производном классе перегрузить flags().
Название: Re: Отключение стандартных сигналов у видже&# Отправлено: bez_glaz от Февраль 28, 2012, 15:51 Возвращать флаги надо из метода flags класса-наследника QAbstractItemModel, экземпляр которого используется в качестве модели Класс наследник QTableView, а экземпляр получается ui->ListObj ? Я правильно понял ?Название: Re: Отключение стандартных сигналов у видже Отправлено: bez_glaz от Февраль 28, 2012, 15:57 т.е. тебе нужно отнаследоваться от QSqlTableModel и уже в производном классе перегрузить flags(). И снова спасибо =)Код: Qt::ItemFlags QSqlTableModel::flags(const QModelIndex &index) const Название: Re: Отключение стандартных сигналов у видже&# Отправлено: mutineer от Февраль 28, 2012, 15:58 Возвращать флаги надо из метода flags класса-наследника QAbstractItemModel, экземпляр которого используется в качестве модели Класс наследник QTableView, а экземпляр получается ui->ListObj ? Я правильно понял ?Название: Re: Отключение стандартных сигналов у видже&# Отправлено: bez_glaz от Февраль 28, 2012, 15:59 Возвращать флаги надо из метода flags класса-наследника QAbstractItemModel, экземпляр которого используется в качестве модели Класс наследник QTableView, а экземпляр получается ui->ListObj ? Я правильно понял ? |