Реклама
30 августа 2015 г. 13:40

QtQt/C++ - Урок 007. Фильтр для записей в QSqlTableModel

QSqlRelationalTableModel, QSqlTableModel, QSqlTableModel example, фильтр

Продолжая работу с таблицами в Qt , хотелось бы освятить тот момент, как установить фильтр на модель представления данных в QSqlTableModel или в QSqlRelationalTableModel . Поэтому для описания процесса установки фильтра за основу был взят программный код из урока по QSqlTableModel .

Программный код был написан в QtCreator 3.3.1 на основе Qt 5.4.1.

Структура проекта

В данном уроке структура проекта остается аналогичной проекту из урока по QSqlTableModel.

mainwindow.ui

Внесём дополнительные объекта в главное окно приложения, а именно добавим следующие элементы:

  • dateEditFROM - начальная дата;
  • dateEditTO - конечная дата;
  • timeEditFROM - начальное время;
  • timeEditTO - конечное время;
  • pushButton - кнопка, по нажатию которой будет применяться фильтр.

28 августа 2015 г. 19:34

QtQt/C++ - Урок 011. XML файлы в Qt - чтение и запись

Qt, QXmlStreamReader, QXmlStreamWriter, XML, xml example

Средства разработки Qt включают в себя функционал по работе с XML файлами, который позволяет как создавать XML файлы, так и читать их, что может быть полезно для создания программ по автоматическому созданию XML разметок, конфигурационных файлов, использующих XML , либо для парсинга XML-файлов .

Для записи файлов в формате XML используется класс QXmlStreamWriter, тогда как для чтения XML файлов используется другой класс QXmlStreamReader.

Программный код был написан в QtCreator 3.3.1 на основе Qt 5.4.1.

Структура проекта для работы с XML файлом

В данном проекте используется минимум файлов:

  • XMLExample.pro - профайл;
  • mainwindow.h - заголовочный файл основного окна приложения;
  • mainwindow.cpp - исходный код окна;
  • main.cpp - основной исходный файл, с которого стартует приложение;
  • mainwindow.ui - формочка основного окна приложения;
27 августа 2015 г. 7:00

AVRUSI in Attiny24 - settings of Two-wire mode

Attiny24, USI

USI - Universal Serial Interface (Универсальный последовательный интерфейс) является фактически заготовкой для аппаратных последовательных передачи и приёма данных. Данный интерфейс не является готовым решением для какого-то определённого протокола передачи данных, но позволяет реализовать более удобный способ передачи данных, чем в случае с полностью программным решением.

Суть данного интерфейса заключается в том, что он предлагает аппаратный уровень для передачи и приёма последовательной информации, а логика работы протокола уже возлагается на программную реализацию.

26 августа 2015 г. 19:15

QtQt/C++ - Урок 010. QSplitter или Как добавить разделитель

QPallete, QSplitter, QSplitter color, QSplitter example, Qt

Качественная компоновка всегда повышает юзабилити приложения и это справедливо для любых видов приложений, от десктопных до мобильных. Одним из таких элементов интерфейса, который может повысить юзабилити является класс QSplitter , который является объектом типа layout с перемещаемым разделителем, который разделяет две области в интерфейсе приложения.

Структура проекта для QSplitter

Структура проекта для QSplitter

Структура проекта абсолютно ничем не примечательна и мало интересна, поскольку основные действия будут производиться в дизайнере, а настройку QSplitter в mainwindow.cpp будем производить минимальную.

25 августа 2015 г. 7:00

AVRMUL - Операция умножения в AVR Attiny

Attiny, MUL

MUL - инструкция умножения в микроконтроллерах, присутствует, например, в микроконтроллерах Atmega . Но не во всех микроконтроллерах AVR присутствует аппаратная поддержка функций умножения. Например в микроконтроллерах Attiny команда MUL попросту отсутствует, поэтому решение этой задачи возлагается на программный код.

Основной момент, который необходимо учитывать при реализации функции умножения это то, что для сохранения результата умножения понадобится два регистра. В один из регистров будет сохранён младший байт результата, а во второй регистр буде сохранён старший байт результата.

23 августа 2015 г. 7:00

AVRBCD формат на Assembler в AVR Atmega

BCD, Atmega

Десятичные числа на машинном языке могут быть представлены в виде восьмиразрядных последовательностей единиц и нулей, то есть байтов. При этом существует два вида форматов представления десятичных чисел. Это упакованный формат ( BCD ) и распакованный.

Распакованный формат

В данном формате один разряд десятичного числа помещается в один байт. А именно в младшую тетраду байта, тогда как старшая тетрада (именуемая зоной) заполняется единицами. К примеру число 157 будет выглядеть следующим образом.

22 августа 2015 г. 7:30

AVRTWI интерфейс в микроконтроллерах AVR Atmega

TWI, Atmega

Вспомнил немного хардкора в хардваре с TWI интерфейсом, которым занимался несколько лет назад. Кто бы что ни говорил, а Assembler отлично прочищает мозги и развивает понимание алгоритмов. Самое главное, что я усвоил при работе с AVR микроконтроллерами на Аssembler, так это то, что все операции, все директивы, все функции должны писаться в чёткой последовательности. Ведь если записать данные в регистр не в той последовательности, то Ваша прошивка контроллера вообще не заработает. А при написании программного кода на высокоуровневых языках порой можно увидеть полное безразличие в последовательности вызова функций и методов, хотя зачастую в инструкциях к библиотекам можно прочесть, в какой последовательности нужно инициализировать тот или иной функционал, чтобы всё работало. Но кто бы их читал внимательно? Хорошо, если Вы дорогой читатель прочитали этот абзац, а не скопипастили сходу себе программный код библиотеки, который представлен ниже.

21 августа 2015 г. 22:26

Технологии передачи данныхDELL Networking. Основы политик маршрутизации (Часть 1)

DELL, PBR, Route-Map

Корпоративные сети, которые обычно используются для нескольких отделений в организации часто разделены на VLANs для увеличения производительности. Администраторы могут объединить несколько физических коммутаторов в одну виртуальную сеть для создания более эффективного использования полосы пропускания для межведомственного трафика. Участники каждого отделения, кто часто работает удаленно чувствуют увеличение производительности несмотря на большие географические расстояния. При использовании политик маршрутизации другие уровни могут быть включены разрешением администраторов правил входящего и исходящего трафика. Эти правила или установки могут изменить путь пакета по сети.

Настройка PBR включает в себя конструирование route-map с установкой команд, которые включают соответствующий route-map для интерфейса. IP routing должен быть включен на интерфейсах для управления PBR. PBR  может только быть разрешен для входящего трафика через эти интерфейсы.

20 августа 2015 г. 18:45

QtQt/C++ - Урок 009. QTimer или Как работать с таймером в Qt?

Qt, Qt урок, QTimer, QTimer example, QTimer таймер

Немного поговорим о применении класса QTimer в Qt. Это небольшая легкая тема после серии объемных статей про QSqlTabelModel и вытекающих из неё последствий. А то уже у самого серое вещество закипает.

Таймеры нам могут понадобиться для создания опроса устройств по ЛВС через стек TCP/IP с определенной периодичностью или для ежечасной проверки данных или активных подключений к серверу. Да для чего угодно!? И тут нам на помощь приходит QTimer, который Мы рассмотрим на примере ежесекундного вывода времени в QLabel.

Программный код был написан в QtCreator 3.3.1 на основе Qt 5.4.1.

Структура проекта для QTimer

Используем минимум файлов в нашем проекте:

  • QDataMapperWidget.pro - профайл;
  • mainwindow.h - заголовочный файл основного окна приложения;
  • mainwindow.cpp - исходный код окна;
  • main.cpp - основной исходный файл, с которого стартует приложение;
  • mainwindow.ui - формочка основного окна приложения;

А формочку нарисуем в Дизайнере QtCreator. Впрочем там и рисовать нечего. Кинули QLabel в середину и готово.

19 августа 2015 г. 13:59

QtQt/C++ - Урок 008. QDataWidgetMapper - Работа с базой данных через виджет

mapper, QDataWidgetMapper, QDataWidgetMapper example, QSqlTableModel, qt, sql

Для отображения данных в виджет с произвольной формой используется класс QDataMapperWidget . Для работы с этим виджетом по-прежнему требуется модель, для представления данных.

Например, QSqlTableModel или QSqlRelationalTableModel , но данные подставляются уже не в QTableView , а в различные произвольные объекты. Например QLineEdit или QComboBox. Или в диалоговое окно, для добавления записей, с которым поработаем в этой статье.

Итак, задача стоит следующая. Написать программу, которая выводит в таблицу список компьютеров, а каждый компьютер имеет три поля данных: Имя Хоста, IP-адрес и MAC-адрес. Также должна быть кнопка для вызова диалогового окна, через которое Мы можем добавить новое устройство в таблицу. Также у нас должна быть возможность редактирования записей через тоже самое диалоговое окно.

После того, как задача описана, приступаем к её реализации в программном коде, который был написан в QtCreator 3.3.1 на основе Qt 5.4.1.

Структура проекта для QDataWidgetMapper

Проект создается как Приложение Qt Widgets, в котором создаются следующие файлы:

  • QDataMapperWidget.pro - профайл;
  • mainwindow.h - заголовочный файл основного окна приложения;
  • mainwindow.cpp - исходный код окна;
  • main.cpp - основной исходный файл, с которого стартует приложение;
  • mainwindow.ui - формочка основного окна приложения;
  • database.h - заголовочный файл вспомогательного класса, применяющегося для работы с информацией, которая помещена в базу данных;
  • database.cpp - исходный файл вспомогательного класса, применяющегося для работы с информацией, которая помещена в базу данных;
  • dialogadddevice.h - заголовочный файл диалогового окна для добавления и редактирования записей;
  • dialogadddevice.cpp - исходный файл диалогового окна для добавления и редактирования записей;
  • dialogadddevice.ui

Примечание. Большую часть интерфейса создаю в дизайнере, чтобы не загромождать логику основного кода лишней информацией. По сути это лишь дело вкуса и привычки.

Реклама
  • leha
  • 20 октября 2017 г. 11:38

Qt - Тест 001. Сигналы и слоты

  • Результат 63 баллов
  • Очки рейтинга -1
  • faust
  • 19 октября 2017 г. 18:53

C++ - Тест 005. Структуры и Классы

  • Результат 100 баллов
  • Очки рейтинга 10
  • faust
  • 19 октября 2017 г. 15:49

C++ - Тест 002. Константы

  • Результат 91 баллов
  • Очки рейтинга 8
Последние комментарии
  • EVILEG
  • 21 октября 2017 г. 3:06

Qt/C++ - Урок 031. QCustomPlot - строим график по времени

Добавил архив с проектом

  • EVILEG
  • 20 октября 2017 г. 20:06

Qt/C++ - Урок 031. QCustomPlot - строим график по времени

После работы поищу, должен где-то быть на винте.

  • Миша
  • 20 октября 2017 г. 20:04

Qt/C++ - Урок 031. QCustomPlot - строим график по времени

не могли бы вы выложить архив с рабочей версией скрипта?

  • EVILEG
  • 20 октября 2017 г. 20:03

Qt/C++ - Урок 030. QCustomPlot - быстрый старт в работе с графиками

Использование дизайнера в Qt Creator и использование ui файлов является распространённой практикой в Qt фреймворке. Написать отдельную статью про то, что это такое? - может быть. Опи...

  • Миша
  • 20 октября 2017 г. 19:43

Qt/C++ - Урок 030. QCustomPlot - быстрый старт в работе с графиками

Но почему вы это не описали? Не могли бы вы описать.

Сейчас обсуждают на форуме
  • cordsac
  • 19 октября 2017 г. 15:49

How can I select the QGraphicView Item and change the properties

Ok I'll check it sir,If you can please do article(tutorial) about this,Its really useful.Thank you if you can give me some sample code when you free.thanks again

  • cordsac
  • 17 октября 2017 г. 19:28

How can I open SVG file through QT

Okay,Thank you sir :)

  • EVILEG
  • 16 октября 2017 г. 20:34

Qt, Загрузка изображения в QImage

Сам view нужно поместить в внутри окна, а не просто создать его. Можете создать в графическом редакторе Qt Creator`а окно, набросать там QGraphicsView и потом посмотреть в сгенерированном...

  • mihenze
  • 15 октября 2017 г. 21:30

Рисуем линию QGraphicsItem за мышью

Большое спасибо!

  • EVILEG
  • 15 октября 2017 г. 18:58

Описание класса С++ в QtCreator

Для начала добавьте недостающие методы и участники для Q_PROPERTY. Для этого вызовите контекстное меню через ПКМ у Q_PROPERTY, там будет пункт "добавить недостающие члены". Автоматически...