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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: [1]
1  Qt / Вопросы новичков / Как из модели списка испустить сигнал? : Май 24, 2021, 10:54
В главном окне приложения есть 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);
                                            ^

О чем говорит эта ошибка? Что не так?
2  Qt / Вопросы новичков / Получить указатель на главное окно : Апрель 28, 2021, 09:01
Qt только осваиваю, поэтому возникают такие вопросы.

Есть приложение на основе QDialog. Главное окно создает дочернее окно на основе QDialog.

Как из дочернего окна получить доступ к public-методам главного окна?

На просторах сети нашел метод получения указателя на главное окно:

MainDialog *nw = qobject_cast<MainDialog*>( QApplication::topLevelWidgets()[ 0 ] );

Но видимо этот способ недостаточно безопасный, т.к. в половине случаев программа вылетает без объяснения каких-либо причин из-за этого, потому что оказывается nw=0. Видимо вылетает исключение. Поэтому такой способ не подходит. Кстати, почему вылетает?

Объясните, как правильно поступить в такой простейшей ситуации? Как обращаться к функциям главного окна из дочерних окон?
Страниц: [1]

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