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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: [решено]Сигнал от класса наследуемого отQSqlQueryModel об редактировании модели.  (Прочитано 12281 раз)
mutineer
Гость
« Ответ #15 : Апрель 11, 2012, 11:37 »

а в setData ты этот сигнал испускаешь? опять какие-то огрызки кода дал...
Записан
Kirill_m
Гость
« Ответ #16 : Апрель 11, 2012, 11:46 »

мм.. в setData ?
про куски кода - думал не важно...


Код:
bool AmdinWidgetSqlModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
 

    
    QModelIndex primaryKeyIndex = QSqlQueryModel::index(index.row(), 1);
    
    int id = data(primaryKeyIndex,0).toInt();

    clear();
    bool ok;
    
    switch ( index.column() )
       {
            case 1:
                {
                    ok = setDate(id,value.toString());
                    break;
                }

            case 3:
                {
                    ok = setTimeStart(id,value.toString());
                    break;
                }

            case 4:
                 {
                     ok = setCoordinatesStart(id,value.toString());
                     break;
                 }


            case 5:
                 {
                    ok = setTimeStop(id,value.toString());
                    break;
                 }

            case 6:
                 {
                    ok=setCoordinatesStop(id,value.toString());
                    break;
                 }
            case 7:
                {
                    ok=setTipe1(id,value.toFloat());
                    break;
                }
            case 8:
                {
                    ok=setTipeOut1(id,value.toFloat());
                    break;
                 }
            case 9:
                {
                    ok=setTipe2(id,value.toFloat());
                    break;
                }
           case 10:
                {
                    ok=setTipeFishOut2(id,value.toFloat());
                    break;
                }
            case 11:
                {
                    ok=setTipeFish3(id,value.toFloat());
                    break;
                }
            case 12:
                 {
                    ok=setTipeOut3(id,value.toFloat());
                    break;
                 }
            case 13:
                {
                    ok=setTipe4(id,value.toFloat());
                    break;
                }

            case 14:
                {
                    ok=setTipeOut4(id,value.toFloat());
                    break;
                 }
            case 15:
                {
                    ok=setTipe5(id,value.toFloat());
                    break;
                }
            case 16:
                {
                    ok=setTipeOut5(id,value.toFloat());
                    break;
                 }
            case 17:
                {
                    ok=setTipe6(id,value.toFloat());
                    break;
                }

            case 18:
                {
                    ok=setTipeOut6(id,value.toFloat());
                    break;
                 }
    }





    refresh();
    return ok;
}


void AmdinWidgetSqlModel::refresh()  -просто селект в базу данных
Записан
mutineer
Гость
« Ответ #17 : Апрель 11, 2012, 11:49 »

выбрасывай сигнал явно
Записан
Kirill_m
Гость
« Ответ #18 : Апрель 11, 2012, 11:52 »

выбрасывай сигнал явно
Поясни пожалуйста
Записан
mutineer
Гость
« Ответ #19 : Апрель 11, 2012, 11:54 »

выбрасывай сигнал явно
Поясни пожалуйста

В setData делай emit dataChanged(...)
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #20 : Апрель 11, 2012, 12:00 »

void AmdinWidgetSqlModel::refresh()  -просто селект в базу данных
Хм, а из-за этого не получишь рекурсию?
Записан

Qt 5.11/4.8.7 (X11/Win)
Kirill_m
Гость
« Ответ #21 : Апрель 11, 2012, 12:34 »

void AmdinWidgetSqlModel::refresh()  -просто селект в базу данных
Хм, а из-за этого не получишь рекурсию?

Не, не циклится. Всё нормально.

сигнал вызываем тут в setData, после обновления модели.
Код:
 .........
...........
..........
   refresh();
    emit dataChanged(index,index);
    return ok;

Спасибо огромное.
Мда косячки есть у меня) ну что ж буду исправляться)

Да мм.. можно еще вопрос ну около этой же темы.
Надо что бы последняя колонка в таблице была определенного цвета.
Как я понял надо переопределить QVariant data

.h AmdinWidgetSqlModel
Код:
  QVariant data(const QModelIndex &index, int role = Qt::DisplayRole ) const;

.cpp
Код:
QVariant FisheryWidgetSqlModel::data(const QModelIndex &index, int role) const
{
    switch (role)
    {
    case Qt::BackgroundRole:
        if(index.column()==19)
            return Qt::darkGreen; // пусть такой для примера.
        break;
    }

  return QVariant();
}
Естественно цвет ставит, но данные то не выводит.
Как же их вывести.
 Уже туплю...
Записан
mutineer
Гость
« Ответ #22 : Апрель 11, 2012, 12:35 »

твой метод дата возвращает только цвет, данные не возвращает. Откуда ж им взяться на экране?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #23 : Апрель 11, 2012, 13:01 »

Естественно цвет ставит, но данные то не выводит.
Как же их вывести.
 Уже туплю...
Вызывай для остальных случаев data() базового класса.
Записан

Qt 5.11/4.8.7 (X11/Win)
Kirill_m
Гость
« Ответ #24 : Апрель 11, 2012, 13:15 »

Код:
QVariant AmdinWidgetSqlModel::data(const QModelIndex &index, int role) const
{
    switch (role)
    {
    case Qt::BackgroundRole:
        if(index.column()==19)
            return Qt::darkGreen; // color for QBrush
        break;
    }
    switch ( index.column() ) //поменять тут
           {
                case 4:
                    {
                      // и тут выводим значение по индексу?
                    }
            }

    return QVariant();
}

Смысл в том что там должны отображаться данные и измениться фон в этой колонке..

ушел за кофе..
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #25 : Апрель 11, 2012, 13:26 »

Чего-то подтормаживаешь без кофе то)
Код
C++ (Qt)
QVariant AmdinWidgetSqlModel::data(const QModelIndex &index, int role) const
{
   if( role == Qt::BackgroundRole && index.column()==19 )
           return Qt::darkGreen; // color for QBrush
 
   return QSqlQueryModel::data( index, role );
}
Записан

Qt 5.11/4.8.7 (X11/Win)
Kirill_m
Гость
« Ответ #26 : Апрель 11, 2012, 13:35 »

Чего-то подтормаживаешь без кофе то)
Код
C++ (Qt)
QVariant AmdinWidgetSqlModel::data(const QModelIndex &index, int role) const
{
   if( role == Qt::BackgroundRole && index.column()==19 )
           return Qt::darkGreen; // color for QBrush
 
   return QSqlQueryModel::data( index, role );
}

Огромное спасибо)
Ну наверно всё можно закрывать.
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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