© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
31 октября 2017 г. 8:27

QtQt - WinAPI. Как показать запущенное приложение поверх своего приложения

WinAPI, Qt, winId

Возникла у меня как-то задача управлять приложениями - сервисами, написанными на Qt, из приложения - ядра, написанного также на Qt. Причем, если приложение сервис не запущено, то оно должно запускаться, а если запущено, его окно должно выводиться на передний план. Для вызова приложений используется QProcess.

30 октября 2017 г. 6:36

LinuxСекреты написания хорошей документации

Документация

На предстоящей конференции APIStrat в Портленде Тейлор Барнетт изучит различные принципы проектирования документации и обсудит лучшие практики.

26 октября 2017 г. 11:57

QMLЗапуск приложений Qt в браузере благодаря использованию WebGL плагина

QML, Qt, WebGL, 3D

Интересная особенность пришла в Qt 5.10, это новый бэк-энд Qt, который использует WebGL для визуализации. Это позволяет приложениям Qt (с некоторыми ограничениями) работать в веб-браузере, который поддерживает WebGL.

Что это такое?

В новом бэк-энде используется WebGL, что означает Web Graphic Library . WebGL - это API JavaScript для визуализации 2D и 3D-графики в любом совместимом веб-браузере без использования плагинов. API похож на OpenGL ES 2.0 и может использоваться в элементах canvas HTML5.

Новый бэк-энд будет представлен как техническая функция предварительного просмотра в Qt 5.10.0 и включен в версии Alpha и Beta (на данный момент, Qt 5.10.0 является бета-версией на 1ом этапе разработки).

Последний исходный код также доступен в Qt git на http://code.qt.io/cgit/qt/qtwebglplugin.git/ .

Плагин распространяется либо по лицензии GPLv3, либо по коммерческим лицензиям. Обратите внимание, что он недоступен в LGPL. Одним из последствий лицензии GPL является то, что если вы ссылаетесь на нее (даже динамически), код вашего приложения попадает под GPL.

23 октября 2017 г. 7:22

QtБлокирующий последовательный порт. QSerialPort + QThread.

Qt, QSerialPort, QThread

Мне представилась задача написать ПО для управления излучателем рентгена. А именно: реализовать протокол передачи данных между ПК и излучателем рентгена и создать пользовательские функции "Установить параметры", "Включить рентген", "Выключить рентген".

Управление излучателем рентгена осуществляется благодаря передаче данных по последовательному порту, который еще называют COM-портом, но применимо это только в отношении ОС Windows.

Qt имеет класс QSerialPort, который предоставляет функции для доступа к последовательному порту.

Хочу продемонстрировать вам свою реализацию данной задачи.

22 октября 2017 г. 8:54

QtQt/C++ - Урок 072. Пример векторного редактора на Qt

QGraphicsItem, QGraphicsScene, QGraphicsView, Vector Editor, QGraphicsObject

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

А именно это был векторный редактор, который может:

  • Создавать прямоугольники
  • Изменять размер этих прямоугольников
  • Крутить прямоугольники вокруг центра
  • Делать заливку прямоугольников
  • Делать заливку прямоугольников градиентом
  • Изменять ширину абриса прямоугольника
  • Устанавливать цвет абриса прямоугольника
  • Создавать линии
  • Задавать ширину и цвет создаваемой линии
  • Делать ломанные линии из линий по двойному щелчку добавляя на линии точки излома
  • Выделять все графические объекты и перетаскивать их кучкой
  • Сохранять полученное изображение в SVG файл, а также восстанавливать все графические объекты из этого файла

На выполнение этого проекта в своё время (1,5 года назад) я потратил порядка 36 часов рабочего времени... сейчас на это ушло бы поменьше времени.

15 октября 2017 г. 21:31

C++C++ - Урок 011. Исключения

C++, throw, catch, exception

Что такое исключение? Это ситуация, которая не предусмотрена стандартным поведением программы. Например, попытка доступа к элементу в классе Vector (который мы разбирали в статье про классы ), который не существует. То есть происходит выход за пределы вектора. В данном случае можно воспользоваться исключениями, чтобы прервать выполнение программы. Это необходимо потому, что

  • Как правило в таких случаях, автор класса Vector не знает, как пользователь захочет использовать его класс, а также не знает в какой программе этот класс будет использоваться.
  • Пользователь класса Vector не может всегда контролировать правильность работы этого класса, поэтому ему нужно сообщить о том, что что-то пошло не так.

Для разрешения таких ситуация в C++ можно использовать технику исключений.

14 октября 2017 г. 20:41

C++C++ - Урок 010. Пространство имён

namespaces, C++

В дополнение к функциям, классам и перечислениям C++ предоставляет пространства имён (namespaces) как механизм управления и контроля за повторяющимися именами функций и классов. Например, если назвать некоторые ваши функции именами, которые пересекаются с именами функций в стандартной библиотеки, то Вы получите конфликт имён, то есть переопределение функции из стандартной библиотеки, что может привести к неопределённости и ошибкам в программе. Благодаря пространству имён можно избежать этой проблемы, просто поместив функции в namespace .

7 октября 2017 г. 20:46

SFMLSFML - Урок 001. Подключение библиотеки SFML в проект на Qt

SFML, Qt, C++, QWidget

SFML представляет собой объектно-ориентированный аналог SDL. Библиотека предоставляет простой доступ к системам ввода вывода, аудио, сети передачи данных, а также к функционалу OpenGL.

А что если дополнительно прикрутить к этой библиотеке ещё и функционал Qt, получить в управление мощные возможности сигналов и слотов, ресурсных файлов Qt? Что для этого потребуется?

  1. Скачать с GitHub последнюю версию исходников SFML .
  2. Скомпилировать исходники в библиотеку
  3. Создать проект Qt
  4. Подключить библиотеку в проект
  5. Написать виджет, который будет рендериться напрямую через функционал SFML
4 октября 2017 г. 17:05

QtQt, Сборка драйвера IBASE (FireBird) Win10 Fierbird 2.5

QIBASE, ming32, Qt, драйвер

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

23 сентября 2017 г. 11:55

DjangoDjango - Урок 027. Добавление Google reCAPTCHA

Google, reCAPTCHA, Validation, Google API

Добавил на сайт reCAPTCHA при регистрации пользователей и некоторых других действиях анонимных пользователей, а то слишком много роботов регистрируется на сайте.

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

Для внедрения reCAPCTHA на сайт необходимо зарегистрировать свой сайт в админке reCAPTCHA .

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

21 мая 2018 г. 8:30
Nasty

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

  • Результат 10 баллов
  • Очки рейтинга -10
20 мая 2018 г. 12:26
Venic

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

  • Результат 58 баллов
  • Очки рейтинга -2
20 мая 2018 г. 12:16
Venic

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

  • Результат 90 баллов
  • Очки рейтинга 8
Последние комментарии
19 мая 2018 г. 12:44
EVILEG

Django - Snippet 001. get_object_or_none

А вы гарантируете, что метод first вернёт нужный объект, если в таблице две похожих записи? Этого никто не гарантирует. Может возникнуть неопределённое поведение приложения, если запись не так...
19 мая 2018 г. 12:34
Pavel

Django - Snippet 001. get_object_or_none

Согласен с тем что ваше решение более очевидно при чтении кода. first() же здесь применяется не совсем по назначению. А с последствиями "моего" решения не согласен. Метод вернёт только один об...
19 мая 2018 г. 12:27
EVILEG

Как я использовал FilterView заместо ListView для упрощения фильтрации

Может быть, а может и нет, все имеют различную речь.. не могу отвечать за всех пользователей ресурса.. поскольку каждый пользователь может дополнить материал ресурса статьями.
19 мая 2018 г. 12:25
EVILEG

Django - Snippet 001. get_object_or_none

В вашем случае происходит подмена сущностей. Вместо того, чтобы взять один конкретный объект, вы забираете queryset а потом берёте из него первый объект. Нехорошо будет, если queryset в каком-...
19 мая 2018 г. 11:11
Pavel

Django - Snippet 001. get_object_or_none

Тоже искал подобную функцию, чтобы не обрабатывать каждый раз исключения. И нашёл на so совет использовать вместо неё метод менеджера first(), который возвращает None при пустом queryset. Т.е ...
Сейчас обсуждают на форуме
21 мая 2018 г. 16:18
otvertka

Выводит мусор

Да, мыши. Т.е. мне надо создать класс-потомок от QPushButton, и там переопределить метод mousePressEvent? И как тогда у  Buttons поменять класс на созданный?
20 мая 2018 г. 2:05
vitaliy_antipov

Удаление серии из графика

Ой, извините, совсем запарился. Туплю: void MainWindow::onDelSeries(int i){ chartview->chart()->findChild<QLineSeries *>("obj" + QString::number(i))->deleteLater();...
18 мая 2018 г. 8:55
mak_trefa

Сборщик мусора и Connections в qml

можешь попробовать в деструкторе модели вызвать throw; и в дебагере посмотреть stacktrace
17 мая 2018 г. 20:30
EVILEG

Нарисовать дугу в QGraphicsItem

Добрый день! Оу, я смотрю по гитхабу, что вы уже разобрались с проблемой. Извиняюсь, заработался и забыл про ваш вопрос.
17 мая 2018 г. 15:34
Евгений_Канусовский@1981

Проблема с combobox

Спасибо за очередную помощь!

Рекомендуемые страницы