Как из модели списка испустить сигнал?
От: The Minister Земля  
Дата: 24.05.21 07:50
Оценка:
В главном окне приложения есть QTableView, данные рисуются в модели. В модели в функции data (для вывода данных) происходят расчеты для вывода и, если условие выполняется, то надо совершить событие (конкретно — запуск файла). Идея — испустить сигнал в модели, поймать его в главном окне и выполнить событие.

В модели делаю проверку и испускаю сигнал в главное окно:

QVariant AlarmsModel::data( const QModelIndex& index, int role ) const
{

  if //
    emit runAlarm(alarm);

}


где runAlarm(alarm) определен в хедере:

signals:
    void runAlarm(struct Alarm alarm);


И на этом ошибка на строку "emit runAlarm(alarm)":

D:\...\alarmsmodel.cpp:182: error: passing 'const AlarmsModel' as 'this' argument discards qualifiers [-fpermissive]
..\...\alarmsmodel.cpp: In member function 'virtual QVariant AlarmsModel::data(const QModelIndex&, int) const':
..\...\alarmsmodel.cpp:182:44: error: passing 'const AlarmsModel' as 'this' argument discards qualifiers [-fpermissive]
emit runAlarm(alarm);
^


О чем говорит эта ошибка? Что не так?
Re: Как из модели списка испустить сигнал?
От: Qt-Coder  
Дата: 24.05.21 08:08
Оценка:
Соединение сигнала и слота прямое или через Queue?
Re: Как из модели списка испустить сигнал?
От: Senyai Россия http://www.arseniy.net
Дата: 24.05.21 08:45
Оценка: +2
Здравствуйте, The Minister, Вы писали:

TM>О чем говорит эта ошибка? Что не так?


QVariant AlarmsModel::data( const QModelIndex& index, int role ) const;
runAlarm(alarm);
Судя по ошибке, метод const вызывает не const метод.
Не бойтесь совершенства. Вам его не достичь. © Сальвадор Дали
Re: Как из модели списка испустить сигнал?
От: SaZ  
Дата: 24.05.21 14:09
Оценка: +1
Здравствуйте, The Minister, Вы писали:

TM>В главном окне приложения есть QTableView, данные рисуются в модели. В модели в функции data (для вывода данных) происходят расчеты для вывода и, если условие выполняется, то надо совершить событие (конкретно — запуск файла). Идея — испустить сигнал в модели, поймать его в главном окне и выполнить событие.


TM>В модели делаю проверку и испускаю сигнал в главное окно:


TM>
TM>QVariant AlarmsModel::data( const QModelIndex& index, int role ) const
TM>{

TM>  if //
TM>    emit runAlarm(alarm);

TM>}
TM>


TM>...


А зачем вам такие проверки? Какая логика? Когда вызывается метод data решает вьюха, это своего рода callback. Он может быть вообще ни разу не вызван.
Вы видимо не совсем хорошо поняли зачем нужны модели. Модель это на самом деле прокси между вашей логикой и кутэшным отображением. Считать нужно в вашем коде.
Re[2]: Как из модели списка испустить сигнал?
От: The Minister Земля  
Дата: 25.05.21 04:57
Оценка:
Здравствуйте, SaZ, Вы писали:

SaZ>А зачем вам такие проверки? Какая логика? Когда вызывается метод data решает вьюха, это своего рода callback. Он может быть вообще ни разу не вызван.

SaZ>Вы видимо не совсем хорошо поняли зачем нужны модели. Модель это на самом деле прокси между вашей логикой и кутэшным отображением. Считать нужно в вашем коде.

Понял вас. Переделал.
Отредактировано 25.05.2021 6:29 The Minister . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.