Russian Qt Forum

Qt => Model-View (MV) => Тема начата: Cyrax от Январь 10, 2008, 11:00



Название: Model-view, делегат по умолч.: QLineEdit не инициализируется значением из view..
Отправлено: Cyrax от Январь 10, 2008, 11:00
Почему в model-view делегат по умолчанию, создавающий редактор QLineEdit при редактировании полей представления QTableView, не инициализирует себя значением из соответствующей ячейки представления ?
Это глюк или так и должно быть ?


Название: Re: Model-view, делегат по умолч.: QLineEdit не инициализируется значением из view..
Отправлено: Mikhail от Январь 10, 2008, 12:15
Почему в model-view делегат по умолчанию, создавающий редактор QLineEdit при редактировании полей представления QTableView, не инициализирует себя значением из соответствующей ячейки представления ?
Это глюк или так и должно быть ?

Что то новое - делегат по умолчанию.
Это не глюк а нежелание читать документацию.
Посмотри пример $(QTDIR)/examples/itemviews/spinboxdelegate и поймешь как это работает.
Делегата надо бы создать и после этого будет работать.


Название: Re: Model-view, делегат по умолч.: QLineEdit не инициализируется значением из view..
Отправлено: Racheengel от Январь 10, 2008, 13:37
Стоп, создавать ничего не надо.
По умолчанию все отлично работает...
Какая Qt и как model-view создается в приложении?


Название: Re: Model-view, делегат по умолч.: QLineEdit не инициализируется значением из view..
Отправлено: Cyrax от Январь 10, 2008, 16:17
Именно. Всё должно работать по умолчанию.
1. У меня сейчас при двойном клике появляется пустой QLineEdit.
2. После редактирования текст в представление (в ячейку) не передаётся.

Qt 4.3.1.

Цитировать
this->FAPValuesModel = new FAParamValuesModel(this->FAPManager, this);
ui.FAPValuesView->setModel(this->FAPValuesModel);
ui.FAPValuesView->setAlternatingRowColors(true);
ui.FAPValuesView->resizeColumnsToContents();
ui.FAPValuesView->resizeRowsToContents();

Модель FAParamValuesModel - моя. Никаких своих делегатов не устанавливаю...


Название: Re: Model-view, делегат по умолч.: QLineEdit не инициализируется значением из view..
Отправлено: Mikhail от Январь 10, 2008, 20:04
Именно. Всё должно работать по умолчанию.
1. У меня сейчас при двойном клике появляется пустой QLineEdit.
2. После редактирования текст в представление (в ячейку) не передаётся.

Qt 4.3.1.

Цитировать
this->FAPValuesModel = new FAParamValuesModel(this->FAPManager, this);
ui.FAPValuesView->setModel(this->FAPValuesModel);
ui.FAPValuesView->setAlternatingRowColors(true);
ui.FAPValuesView->resizeColumnsToContents();
ui.FAPValuesView->resizeRowsToContents();

Модель FAParamValuesModel - моя. Никаких своих делегатов не устанавливаю...


Согласен по умолчанию все правильно работает, если правильно создана модель( в данном случае - FAPValuesModel ). А в этом у меня большие сомнения. Что то напутал с реализацией функций data и setData.

Немного поправленный пример $(QTDIR)/examples/itemviews/spinboxdelegate работает на ура.

Правленый main.cpp:

/****************************************************************************
**
** Copyright (C) 2004-2007 Trolltech ASA. All rights reserved.
**
** This file is part of the example classes of the Qt Toolkit.
**
** Licensees holding a valid Qt License Agreement may use this file in
** accordance with the rights, responsibilities and obligations
** contained therein.  Please consult your licensing agreement or
** contact sales@trolltech.com if any conditions of this licensing
** agreement are not clear to you.
**
** Further information about Qt licensing is available at:
** http://www.trolltech.com/products/qt/licensing.html or by
** contacting info@trolltech.com.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
****************************************************************************/

/*
  main.cpp

  A simple example that shows how a view can use a custom delegate to edit
  data obtained from a model.
*/

#include <QApplication>
#include <QHeaderView>
#include <QItemSelectionModel>
#include <QStandardItemModel>
#include <QTableView>

#include "delegate.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QStandardItemModel model(4, 2);
    QTableView tableView;
    tableView.setModel(&model);

   // SpinBoxDelegate delegate;
   // tableView.setItemDelegate(&delegate);


    for (int row = 0; row < 4; ++row) {
        for (int column = 0; column < 2; ++column) {
            QModelIndex index = model.index(row, column, QModelIndex());
            model.setData(index, QVariant(QString::number((row+1) * (column+1)) + "A"));
        }
    }

    tableView.setWindowTitle(QObject::tr("Spin Box Delegate"));
    tableView.show();
    return app.exec();
}


Название: Re: Model-view, делегат по умолч.: QLineEdit не инициализируется значением из view..
Отправлено: Cyrax от Январь 10, 2008, 22:00
Блин, всё верно. У меня в data и setData роль Qt::EditRole не обрабатывалась (возвращался QVariant())))


Название: Re: Model-view, делегат по умолч.: QLineEdit не инициализируется значением из view..
Отправлено: Mikhail от Январь 10, 2008, 22:12
Блин, всё верно. У меня в data и setData роль Qt::EditRole не обрабатывалась (возвращался QVariant())))

Успехов в чтении ассистента. И все у тебя будет хорошо


Название: Re: Model-view, делегат по умолч.: QLineEdit не инициализируется значением из view..
Отправлено: Cyrax от Январь 10, 2008, 23:29
Цитировать
Успехов в чтении ассистента. И все у тебя будет хорошо
На форуме быстрее...
А хорошо у меня будет только через 1,5 месяца, когда будут 2 вещи: время и деньги...


Название: Re: Model-view, делегат по умолч.: QLineEdit не инициализируется значением из view..
Отправлено: ритт от Январь 12, 2008, 22:25
основное предназначение форума - помогать раработчикам в сложных ситуациях
нежелание читать документацию - _не_ сложная ситуация, а банальная лень!
советую предварительно читать доки по теме перед тем, как писать очередной пост...


Название: Re: Model-view, делегат по умолч.: QLineEdit не инициализируется значением из view..
Отправлено: Mikhail от Январь 12, 2008, 22:30
основное предназначение форума - помогать раработчикам в сложных ситуациях
нежелание читать документацию - _не_ сложная ситуация, а банальная лень!
советую предварительно читать доки по теме перед тем, как писать очередной пост...

Хорошо подмечено. Поддерживаю.


Название: Re: Model-view, делегат по умолч.: QLineEdit не инициализируется значением из view..
Отправлено: pastor от Январь 12, 2008, 22:31
основное предназначение форума - помогать раработчикам в сложных ситуациях
нежелание читать документацию - _не_ сложная ситуация, а банальная лень!
советую предварительно читать доки по теме перед тем, как писать очередной пост...

+1