Russian Qt Forum
Май 17, 2024, 04:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Model-view, делегат по умолч.: QLineEdit не инициализируется значением из view..  (Прочитано 8181 раз)
Cyrax
Гость
« : Январь 10, 2008, 11:00 »

Почему в model-view делегат по умолчанию, создавающий редактор QLineEdit при редактировании полей представления QTableView, не инициализирует себя значением из соответствующей ячейки представления ?
Это глюк или так и должно быть ?
Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 586


Просмотр профиля
« Ответ #1 : Январь 10, 2008, 12:15 »

Почему в model-view делегат по умолчанию, создавающий редактор QLineEdit при редактировании полей представления QTableView, не инициализирует себя значением из соответствующей ячейки представления ?
Это глюк или так и должно быть ?

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

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #2 : Январь 10, 2008, 13:37 »

Стоп, создавать ничего не надо.
По умолчанию все отлично работает...
Какая Qt и как model-view создается в приложении?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Cyrax
Гость
« Ответ #3 : Январь 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 - моя. Никаких своих делегатов не устанавливаю...
Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 586


Просмотр профиля
« Ответ #4 : Январь 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();
}
Записан
Cyrax
Гость
« Ответ #5 : Январь 10, 2008, 22:00 »

Блин, всё верно. У меня в data и setData роль Qt::EditRole не обрабатывалась (возвращался QVariant())))
Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 586


Просмотр профиля
« Ответ #6 : Январь 10, 2008, 22:12 »

Блин, всё верно. У меня в data и setData роль Qt::EditRole не обрабатывалась (возвращался QVariant())))

Успехов в чтении ассистента. И все у тебя будет хорошо
Записан
Cyrax
Гость
« Ответ #7 : Январь 10, 2008, 23:29 »

Цитировать
Успехов в чтении ассистента. И все у тебя будет хорошо
На форуме быстрее...
А хорошо у меня будет только через 1,5 месяца, когда будут 2 вещи: время и деньги...
Записан
ритт
Гость
« Ответ #8 : Январь 12, 2008, 22:25 »

основное предназначение форума - помогать раработчикам в сложных ситуациях
нежелание читать документацию - _не_ сложная ситуация, а банальная лень!
советую предварительно читать доки по теме перед тем, как писать очередной пост...
Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 586


Просмотр профиля
« Ответ #9 : Январь 12, 2008, 22:30 »

основное предназначение форума - помогать раработчикам в сложных ситуациях
нежелание читать документацию - _не_ сложная ситуация, а банальная лень!
советую предварительно читать доки по теме перед тем, как писать очередной пост...

Хорошо подмечено. Поддерживаю.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #10 : Январь 12, 2008, 22:31 »

основное предназначение форума - помогать раработчикам в сложных ситуациях
нежелание читать документацию - _не_ сложная ситуация, а банальная лень!
советую предварительно читать доки по теме перед тем, как писать очередной пост...

+1
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 22.