Политика конфиденциальностиКонтактыО сайтеОтзывыGitHubDonate
© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
17 августа 2015 г. 6:55

Qt

QSqlQueryModel, qsqlquerymodel example, qt, qt таблицы, query

Использование QSqlQueryModel для формирования таблиц в Qt является наиболее хардкорным вариантом с наиболее низким уровнем абстракции, чем использование QSqlTableModel или QSqlRelationalTableModel . Но при всём при этом и наиболее гибкий вариант, который требует более глубокого знания языка SQL-запросов. В предыдущей статье были построены две таблицы:

  • Основная , в которой были колонки Дата, Время, Имя Хоста, IP-адрес.
  • Таблица устройств, в которой были колонки Имя Хоста и IP-адрес.

В Основной таблице в колонках Имени Хоста и IP-адреса указывались ID-устройств, по которым проводилась подстановка данных из Таблицы устройств. В данной статье структура первой таблицы и следовательно таблицы будут выглядеть иначе:

  • Основная , в которой были колонки Дата, Время, ID устройства.
  • Таблица устройств, в которой были колонки Имя Хоста и IP-адрес.

Генерация Основной таблицы в Приложении будет производиться SQL-запросом и таблица будет иметь соответственно колонки Дата, Время, Имя Хоста и IP-адрес.

16 августа 2015 г. 15:32

Qt

WinAPI, DLL, InnoSetup, Windows, Qt, Инсталлятор

В прошлой статье Мы научились быстро собирать все используемые в проекте DLL-библиотеки. А теперь настало время поговорить о том, как собрать инсталлятор для ОС Windows. Уже длительное время пользуюсь довольно удобной opensource утилитой под названием InnoSetup, которая позволяет буквально в несколько кликов собирать мультиязычный инсталлятор.

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

Сборка инсталлятора

Шаг первый. Запуск сценария сборки скрипта

Для запуска сценария заходим в меню и выбираем создать новый: File > New или комбинация клавиш Ctrl + N.

После чего нажимаем на кнопку Next.

16 августа 2015 г. 14:43

Qt

WinAPI, DLL, DLL Collector, DLLCollector, Qt

Рано или поздно перед любым Qt-разработчиком встаёт необходимость переноса своего приложения на другие компьютеры, и тогда возникает проблема наличия библиотек на целевом компьютере, которые необходимы для запуска и работы приложения. Особенно заметно это может быть при переносе приложения, которое должно исполняться под ОС Windows. Если под ОС Linux необходимые Qt библиотеки могут присутствовать по умолчанию, как например с Ubuntu, то под ОС Windows их может и вовсе не быть.

Но поиск и сборка всех необходимых библиотек может оказаться трудной задачей для новичка, да и вполне нудной задачей для опытного программиста. Но и здесь благодаря добрым людям имеется решение. Это утилита DLL Collector. Данная утилита позволяет получить зависимости программы, которая была написана на фреймворке Qt и автоматически скопировать данные библиотеки в заданную папку.

Как пишет Автор , утилита производит поиск зависимостей в runtime процесса. Следовательно Вашу программу необходимо запустить через данную утилиту. DLL Collector собирает информацию о всех подгружаемых Плагинах, используемых Вашей программой, но при этом не стоит забывать, что плагины подгружаются при первом использовании их функциями Вашей программы. Таким образом, необходимо сделать прогон Вашей программы по её функционалу, чтобы DLL Collector нашёл все библиотеки.

15 августа 2015 г. 16:31

Qt

QSqlRelationalTableModel, QSqlRelationalTableModel example, qt, qt таблицы, sql, sqlite

В Qt для представления таблиц поля, которых связаны внешними ключами с другими таблицами базы данных, может применяться QSqlRelationalTableModel , которая является более продвинутым вариантом класса QSqlTableModel ,  который был рассмотрен в предыдущей статье .

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

В данной статье рассматривается вариант из двух таблиц. В одной из таблиц содержится информация об устройствах (Имя хоста и IP адрес), а во второй таблице ID этих устройств, по которым в второй таблице будут подставляться Имя хоста и IP адрес соответственно устройствам.

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

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

Проект для этого урока является доработанной версией предыдущей статьи и остается неизменной.

14 августа 2015 г. 17:44

Qt

database, QSqlTableModel, QSqlTableModel example, qt, qt таблицы, sql, sqlite

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

  • QSqlQueryModel - модель, которая формирует таблицу путем задания сырого SQL-запроса. Может быть полезна при формировании особо изощренных фильтров и компиляции информации из различных таблиц базы данных. О ней подробнее в следующих уроках.
  • QSqlTableModel - предмет нашей беседы в данной статье. Модель, которая формирует таблицу по имени той таблицы, которая существует в базе данных. Из минусов можно отметить отсутствие методов подключения связей c другими таблицами, чтобы подставлять значения в поля из других таблиц по ID.
  • QSqlRelationalTableModel - класс, который позволяет формировать таблицу со связями из других таблиц, подменяя значения таблицы, которую представляет данная модель, по ID записей, содержащихся в других таблицах.

Для комфортной работы с информацией, которая помещена в базу данных применяется дополнительный класс, который частично представляет собой шаблон проектирования "Фасад" .

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

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

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

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

Qt

QSettings, QSettings example, QSettings пример, qt, Настройки, сохранение настроек

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

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

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

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

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

Qt

QSystemTrayIcon, Tray, qt, трей

Аналогичная статья на PyQt5/Python

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

Поэтому займёмся следующими вопросами:

  • Как научить Вашу программу сворачиваться в трей;
  • Как сделать контектсное меню для иконки трея Вашего приложения;
  • Как отключать данную функцию, если в ней нет необходимости.

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

11 августа 2015 г. 16:12

Технологии передачи данных

DELL, vlan, voice vlan

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

Прежде, чем настраивать VLAN на интерфейсах коммутатора, необходимо внести VLAN в базу данных коммутатора и создать интерфейс VLAN:

console(config)# vlan database
console(config-vlan)# vlan 1972
console(config-vlan)# end
console(config)# interface vlan 1972
console(config-if)# name Marketing
console(config-if)# end
10 августа 2015 г. 15:59

Технологии передачи данных

DELL, LACP, MLAG

Campus Switching Architecture

Коммутаторы Dell networking N-series основаны на современной архитектуре кампусных сетей

  1. Поддерживают петлевую избыточность без использования STP протокола посредством использования протокола MLAG для создания повышенной доступности ресурсов и большой полосы пропускания.
  2. Плавное взаимодействие с существующей инфраструктурой для большей совместимости и интеграции.
  3. Объединение различных сетевых продуктов с последними открытыми стандартами протоколов для большего выбор в сети.

Архитектура кампуса на коммутаторах Dell основывается на функционале протокола MLAG запущенного в версии 6.1 операционной системы  коммутаторов Dell. В этой архитектуре два коммутатора N4064F в качестве peers агрегируют коммутаторы доступа, которые объединены в два стека также в качестве peers . Каждый коммутатор стека обслуживает часть одного этажа в здании кампуса, который агрегируется двумя 10Гбит/c uplink’ами. N4064F коммутаторы уровня агрегации с легкостью поддерживают до 24 стеков коммутаторов. Данная архитектура предоставляет повышенную полосу пропускания, преодолевая ограничения STP по блокированию избыточных портов. Сеть проектируется с высокой избыточностью в плане отказа канала связи и коммутаторов.

10 августа 2015 г. 4:00

Qt

ip address, ip адрес, lineedit, qlineedit, QLineEdit example, QLineEdit IP Address, qt, qtcreator

Доступны аналогичные статьи на Qt/QML и PyQt5/Python

При разработке сетевых приложений может потребоваться создание формочки для ввода ip-адреса, но применение простого метода setInputMask("000.000.000.000;_"); с данным аргументом для QLineEdit не обеспечивает должного результата, поскольку маска позволяет вводить значения 999, 657 и т.д., тогда как IP-адрес ограничивается число 255.

Одним из способов решения данной проблемы является применение Валидатора.

m
19 декабря 2018 г. 10:37
maintumanov

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

  • Результат:68баллов,
  • Очки рейтинга-1
ИН
18 декабря 2018 г. 17:37
Игорь Носач

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

  • Результат:64баллов,
  • Очки рейтинга-1
ИН
18 декабря 2018 г. 17:22
Игорь Носач

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

  • Результат:35баллов,
  • Очки рейтинга-10
Последние комментарии
V
15 декабря 2018 г. 2:06
Vlad15007

Спасибо большое!Очень помогли!
11 декабря 2018 г. 21:01
Евгений Легоцкой

Не знаю, какой-там конкретно эффект и если честно не хочется fl studio ради того, чтобы посмотреть устанавливать, но из того, что увидел в интернете. Предполагаю, что то, что вы хотите с...
V
11 декабря 2018 г. 19:25
Vlad15007

Подскажите пожалуйста ( я новичок совсем)Можно ли организовать спрайт без этого окошка (как в fl studio fruity dance)?
11 декабря 2018 г. 15:06
Евгений Легоцкой

Что интересно, если написать так from <application_name>.<module_name> import <filename> ,то PyCharm сносит крышу, если разрабатываешь в рамках проекта приложение, ко...
11 декабря 2018 г. 14:52
Илья Чичак

Тут мне тоже есть что сказать=) Сами разрабы советуют импортировать следующим образом: from <application_name> import <module_name> Стоит избегать from . import &l...;
Сейчас обсуждают на форуме
М
19 декабря 2018 г. 8:43
Михаиллл

Здравствуйте.Говорят, если подключить ICU, то в SQLite появится регистронезависемый поиск.Я нашел скомпилированный ICU по этой ссылке https://www.npcglib.org/~stathis/blog/precompiled-...
18 декабря 2018 г. 19:58
Евгений Легоцкой

ну если у вас также будет внешний ключ на Serial, то получается следующая ситуация, Movie добавлен в Serial, а Serial имеет список Movie. То есть вам playlist как таковой вовсе не нужен....
R
18 декабря 2018 г. 12:25
RED_Spider

именно так, проблема в кодировке, а именно в отсутствии шрифтов на сервере, для меня вопрос решился в CentOS 7yum install curl cabextract xorg-x11-font-utils fontconfig всем спасибо за ...
U
18 декабря 2018 г. 10:39
Unreal_man

А вот этот коннект здесь и вовсе не нужен connect(ui->ok3, &QPushButton::clicked, this, &Widget::addToText); А как же без него? ============================== ...
m
17 декабря 2018 г. 19:03
melnik10

Спасибо, попробую!
Присоединяйтесь к нам в социальных сетях

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы