- Last comments
- AKApril 1, 2025, 11:41 a.m.Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
- VPMarch 9, 2025, 4:14 p.m.Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
- ИМNov. 22, 2024, 9:51 p.m.Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
- Now discuss on the forum
- МАApril 1, 2025, 4:21 p.m.0ff763fe-4e50-455d-a3a6-5699c243b1a5_17_44_22_1.xml
- fFeb. 15, 2025, 1:46 p.m.Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
- Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
- Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
Ну, если вопрос по реализации обновления от таймера, то по сигналу просто делайте select в модели данных. Если конечно используется какая-нибудь модель данных типа QSqlTableModel , QSqlRealtionalTableModel или модель наследованная от этих моделей.
В заголовочном файле добавьте объект QTimer, можно причём сохранить в стеке, а не в куче через оператор new .
А если учесть, что метод select() у модели данных QSqlTableModel является публичным слотом, то можно напрямую сигнал от таймера подключить к этому методу. Тогда с определённой периодичностью будут обновляться данные, если они изменялись.
Вот например обновление раз в минуту:
Модель данных должна быть установлена в QTableView . Чтобы узнать об изменениях в базе данных, нужно будет сделать выборку ( select() ). Сама БД никак не сообщит об этом.
Так я и сделал, но мне надо при изменении данных в таблице БД .
Когда происходит изменение данных в таблице БД? При каких действиях. Они же не на пустом месте происходят? При изменении данных сторонними средствами? Сторонней программой? Или вашей же программой? Поподробнее никак нельзя объяснить проблему? Серебряной пули не бывает.
А если проверять значения с помощью
и сравнивать с ранее сохраненным значением?Да. Это может сработать. Во всяком случае нагрузка может уменьшиться. Вместо того, чтобы тащить всю таблицу через select будете делать более экономичный запрос, но опять же по таймеру. Вообще у QSqlDriver есть возможность подписки на уведомления от базы данных. Метод subscribeToNotification , но вот тут уже проблема имеется в том, что MySQL не имеет механизма notify , то есть подписаться на уведомления от базы данных просто так не получится, вообще информации по MySQL на эту тему практически нет. А вот с PostgreSQL здесь в разы лучше ситуация. У него имеются уведомления, на которые можно подписаться, самые простые NOTIFY, LISTEN, UNLISTEN . Можно вроде как и на отдельные таблицы подписываться. Так что в случае с PostgreSQL это проще реализовать. Сама база данных будет этому способствовать. В случае же с MySQL - это таймеры и прочие костыли. Так что, если есть возможность сменить БД , то подумайте над этим.