28 августа 2015 г. 13: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 г. 1:00

AVRUSI in Attiny24 - settings of Two-wire mode

Attiny24, USI

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

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

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

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

QPallete, QSplitter, QSplitter color, QSplitter example, Qt

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

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

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

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

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

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

Attiny, MUL

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

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

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

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

BCD, Atmega

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

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

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

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

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

TWI, Atmega

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

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

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

DELL, PBR, Route-Map

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

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

20 августа 2015 г. 12: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 г. 7: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

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

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

Технологии передачи данныхDELL Networking. STP Configuring

MSTP, RSTP, STP

Настройка STP на коммутаторах DELL (В зависимости от версии ОС коммутатора синтаксис может несколько различаться.

Прежде, чем производить настройку STP на портах коммутатора, необходимо произвести глобальную настройку протокола:

console(config)# spanning-tree 
console(config)# spanning-tree mode rstp 
console(config)# spanning-tree priority 12288 
console(config)# spanning-tree hello-time 5 
console(config)# spanning-tree max-age 12 
console(config)# spanning-tree forward-time 25 
console(config)# exit

В данном случае настраиваются версия протокола, приоритет коммутатора при построении дерева, время продвижения пакета, длительность посылки пакета hello. После того, как произведена глобальная настройка протокола, производят настройку протокола на портах коммутатора, которые будут участвовать в построении древовидной топологии.

25 февраля 2018 г. 14:09
exxtra_noise

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат 100 баллов
  • Очки рейтинга 10
25 февраля 2018 г. 14:06
exxtra_noise

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат 60 баллов
  • Очки рейтинга -1
25 февраля 2018 г. 10:39
exxtra_noise

C++ - Тест 003. Условия и циклы

  • Результат 100 баллов
  • Очки рейтинга 10
Последние комментарии
26 февраля 2018 г. 0:55
soz7557

Qt/C++ - Урок 029. Изображение в базе данных в Qt – Сохранение и Восстановление

thanks, but Id should be the same the one as i select the image in tree view.

25 февраля 2018 г. 21:53
Console

Выпуск Qt 5.10

Здравствуйте.Планируется ли урок по Qt Network Authorization? Всё же интересная тема и информации маловато в интернете.

25 февраля 2018 г. 19:54
EVILEG

GameDev на Qt - Урок 4. Обнаружение коллизий в Qt (2D)

Сначала нужно что-нибудь написать, прежде чем это оптимизировать. А вообще все оптимизации исходят из совокупности условий, а не из того, что есть один танк и N треугольников. Да и области вид...

25 февраля 2018 г. 19:31
romankoshelev

GameDev на Qt - Урок 4. Обнаружение коллизий в Qt (2D)

А как насчет оптимизации. Тут ведь например будет ездить N треугольников, для каждого проводить линию и смотреть пересечения? +Это же происходит много раз в секунду.

25 февраля 2018 г. 16:15
EVILEG

GameDev на Qt - Урок 4. Обнаружение коллизий в Qt (2D)

Как вариант, использовать QLineF. Условно взять линию от положения танка, до положения треугольника. И проверить пересечение этой линии с другими линиями на карте с помощью метода intersect. Этот м...

Сейчас обсуждают на форуме
25 февраля 2018 г. 11:31
Mic78

How to retrieve a QCandlestickSet item from a QChartView?

Sorry, in the last sentence I wanted to write: "For that I need to know the maximum value of the QCandlestickSets in the zoomed area."

25 февраля 2018 г. 10:02
EVILEG

Проблема с ComboBox

Да, в принципе идея понятна. Можно воспользоваться одной исходной моделью и делать по ней поиск. Найденные элементы добавлять в модель для отображения. При этом исходная модель буд...

25 февраля 2018 г. 9:07
EVILEG

Qt управление окнами других программ

Добрый день! Это всё делается через WinAPI. В Qt не занимаются разработкой настолько платформозависимого функционала, который нужен единицам. Не знаю, что там было в Delphi, возможн...

21 февраля 2018 г. 13:26
sol11

Qtableviev после сортировки

Спасибо, всё заработало :) Единственное вот тут row на id поменял и всё круто :)) if(id == -1){ model->insertRow(model->rowCount(QModelIndex())); map...

20 февраля 2018 г. 13:18
alex_lip

Разбить один qml файл на несколько составляющих

Да спасибо. Просто после необходимости специфичных названий для файла - стараюсь обращать внимание на любую мелочь.