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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: переобъявить переменную  (Прочитано 3401 раз)
qlewer
Новичок

Offline Offline

Сообщений: 41


Просмотр профиля
« : Май 29, 2020, 13:17 »

имеется переменная model, которая, в зависимости от состояния переключателя, может быть QSqlQueryModel или QStandardItemModel. как в коде переобъявить переменную под нужный тип? такая конструкция не работает:
Код:
QVariant *model;
if(ui->checkBox->isChecked()){
        model=new QSqlQueryModel();
    }else{
        model = new QStandardItemModel();
    }
Записан
tux
Global Moderator
Бывалый
*****
Offline Offline

Сообщений: 404



Просмотр профиля
« Ответ #1 : Май 29, 2020, 14:02 »

Сурово. Одно наследуется от QAbstractItemModel, другое от QAbstractTableModel.
В принципе можно использовать
Код:
QAbstractItemModel *model;
, но как по мне - это изврат. Проще переделать архитектуру проекта.
Записан

ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #2 : Май 29, 2020, 14:05 »

Бьерн Страуструп: "Язык программирования С++", "6.2 Производные классы".
Указатели и ссылки на производные типы.
Записан

Пока сам не сделаешь...
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Май 29, 2020, 16:56 »

Проще переделать архитектуру проекта.
Эта популярная дежурная фраза обычно (или никогда) никакой смысловой нагрузки не несет  Улыбающийся

Почему не PIMPL и все такое? Здесь умничание вроде к месту
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #4 : Май 29, 2020, 18:30 »

имеется переменная model, которая, в зависимости от состояния переключателя, может быть QSqlQueryModel или QStandardItemModel. как в коде переобъявить переменную под нужный тип? такая конструкция не работает:
Код:
QVariant *model;
if(ui->checkBox->isChecked()){
        model=new QSqlQueryModel();
    }else{
        model = new QStandardItemModel();
    }

А что дальше ты с этой моделью планируешь делать?

А так просто замени свой странный QVariant* на QAbstractItemModel*

И рекомендую, чтобы больше не задавать таких вопросов, ознакомиться с наследованием в C++, внимательно вглядеться в документацию по Qt, для каждого класса указывается цепочка его предков. Также обязательно почитай что такое QVariant и как его использовать.
Записан

Гугль в помощь
tux
Global Moderator
Бывалый
*****
Offline Offline

Сообщений: 404



Просмотр профиля
« Ответ #5 : Май 30, 2020, 00:56 »

Эта популярная дежурная фраза обычно (или никогда) никакой смысловой нагрузки не несет  Улыбающийся
Ну мало ли что задумал ТС. Но одна общая переменная для двух разных классов - явно плохая архитектура. Хотя, может ТС любит неявные баги ловить. Улыбающийся
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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