© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
21 декабря 2017 г. 10:55

QtИдиома "стирания типа" на примере QWidget

Type erasure idiom

Статья предполагает наличие у читателя базовых знаний C++

18 декабря 2017 г. 10:24

QtНаписание пользовательского Qt 3D аспекта - часть 2

Qt 3D, OpenGL, C++, Qt

Введение

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

В качестве напоминания о том, что мы имеем в виду, вот диаграмма архитектуры из части 1:

15 декабря 2017 г. 9:02

QMLQML - Урок 035. Использование перечислений в QML без C++

QML, enum, enumerations

Ну вот наконец-то и дождались!!! Появилась возможность объявлять перечисления (enum) сразу в QML без плясок с C++. Как добавлять свои перечисления в QML через C++ я описывал вот в этой статье . По факту здесь нет ничего сложного со стороны C++, просто нужно написать класс, наследованный от QObject, да зарегистрировать через Q_ENUM или Q_ENUMS ваше перечисление в этом классе, да зарегистрировать класс через qmlRegisterType.

Q_ENUM был добавлен в Qt 5.5 для замены Q_ENUMS , и он позволяет получить QMetaEnum во время компиляции с использованием QMetaEnum::fromType<T> . Такие перечисления теперь автоматически регистрируются как метатипы и могут быть преобразованы в строки в QVariant или напечатаны как строка с помощью qDebug().


Однако по моим наблюдениям при регистрации перечислений через Q_ENUM в файлах QML в Qt Creator не работает автодополнение кода для этих перечислений, тогда как при регистрации через Q_ENUMS всё работает.

Но теперь можно написать перечисление сразу в вашем пользовательском типе QML.

Например создадим вот такой тип объекта в QML.

MyText.qml

import QtQuick 2.10

Text {
    enum MyEnum {
        First = 10,
        Second
    }

    anchors.centerIn: parent
}
14 декабря 2017 г. 22:10

QtQt/C++ - Урок 074. Генерация псевдослучайных чисел, использование STD библиотеки random

Qt, C++11, Random, qrand, qsrand, QRandomGenerator

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

Qt предоставляет для генерации случайных числе функцию qrand , а также, начиная с Qt 5.10, класс QRandomGenerator.

Давайте разберём, как можно получить случайные значения в Qt, а также насколько они случайные.

qrand

Будем генерировать числа в диапазоне значений от и до. Для этого напишем две функции.

static int randomBetween(int low, int high)
{
    return (qrand() % ((high + 1) - low) + low);
}

static int randomBetween(int low, int high, int seed)
{
    qsrand(seed); // Установка базового числа для отсчёта рандома в qrand
    return (qrand() % ((high + 1) - low) + low);
}

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

14 декабря 2017 г. 8:12

QtВыпуск Qt 5.10

Releases, Qt5, Qt 5.10

Разработчики Qt анонсировали выпуск Qt 5.10, который ознаменован внесением нового функционала, а также выпуском Qt 3D Studio.

Qt 3D Studio

Как следует из названия, Qt 3D Studio представляет собой графический редактор, используемый для создания трехмерных пользовательских интерфейсов и создан из продукта NVIDIA Drive Design, который NVIDIA внесла в Qt в начале этого года.

Qt 3D Studio содержит runtime компонент, который запускается в вашем приложении, и графический инструмент для проектирования и создания пользовательского интерфейса. Хотя инструмент является автономным приложением, среда выполнения может быть легко интегрирована с остальной частью Qt.

Qt 3D Studio будет работать как с Qt 5.9, так и с 5.10. Runtime компонент и приложение 3D Studio доступны в рамках коммерческого лицензирования и лицензирования GPL.

5 декабря 2017 г. 8:47

QMLСкажи привет обработчику указателя Qt Quick

QML, Qt Quick

Нам известно, что на протяжении нескольких лет поддержка мульти-тач в Qt Quick была неадекватна во многих случаях её использования. У нас есть PinchArea , для обработки масштабирования, вращения и перетаскивания двумя пальцами; и MultiPointTouchArea , которая может использоваться для отображения какой-либо интерактивной обратной связи для точек касания, или, может быть, вы могли бы написать машину состояний в JavaScript, чтобы распознать какой-то жест. Что касается остальной части Qt Quick, то основными проблемами являются: 1) поддержка событий мыши; 2) Qt предполагает, что есть только одна мышь («основной указатель мыши»); 3) QMouseEvent и QTouchEvent (и еще несколько) не имеют подходящего промежуточного базового класса, поэтому они доставляются независимо друг от друга; 4), что было сложным на раннем этапе, чтобы рассматривать события касания как события мыши и доставлять их одинаково. Таким образом, результат заключается в том, что вы не можете взаимодействовать с двумя MouseAreas или Flickables одновременно, например. Также это означает, что вы не можете одновременно нажать две кнопки или перетащить два слайдера одновременно, если они реализованы с помощью MouseArea.

4 декабря 2017 г. 20:41

DjangoВыпуск Django 2.0

Releases, Django

Команда Django анонсировала выпуск Django 2.0

Этот выпуск начинается с использования в Django свободной формы семантического управления версиями, но нет существенных изменений в обратной совместимости (за исключением того, что был удалён Python 2.7), что было ожидаемым в выпуске 2.0. Обновление должно быть таким же, как и для предыдущих выпусков.

Примечания к выпуску

Совместимость с Python

Django 2.0 поддерживает следующие версии Python: 3.4, 3.5 и 3.6. Разработчики Django настоятельно рекомендуют именно эти версии и официально поддерживают только последнии версии данных версионных серий Python.

Django 1.11.x является последней версией, которая поддерживает Python 2.7

Django 2.0 станет последней версией с поддержкой Python 3.4. Если вы планируете развертывание Python 3.4 до конца срока службы для Django 2.0 (апрель 2019 года), то используйте Django 1.11 LTS (поддерживаемый до апреля 2020 года). Обратите внимание, однако, что конец поддержки Python 3.4 - конец марта 2019 года.

Поддержка третьесторонних библиотек для старых версий Django

После выпуска Django 2.0 Разработчики предлагают сторонним разработчикам приложений отказаться от поддержки всех версий Django до 1.11. В тоже время разработчики должны иметь возможность запускать тесты своего пакета с помощью python -Wd , чтобы отображались предупреждения об ошибках. После внесения исправлений для предупреждения об ошибке приложение должно быть совместимо с Django 2.0.

3 декабря 2017 г. 21:05

LinuxSNAP Урок 01. Что такое snap и простой пример сборки пакета

snap

Всем привет.

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

Если кто не в курсе, то технология snapcraft это сборка пакета на подобии *.deb или *.rpm . Но за небольшим отличием, snap пакет полностью самодостаточен. То есть ему от системы ничего вообще не нужно.  На данный момент пакеты snap поддерживают такие дистрибутивы как Arch , Debian, Fedora , Gentoo и само собою сам родоначальник данной технологии Ubuntu . Есть еще около 5-6 дистрибутивов которые поддерживают, но я их не проверял. На форумах пишут, что работает)).

В данной статье я немного опишу конфигурационный файл для сборки.

1 декабря 2017 г. 15:43

QtВыпуск Qt 3D Studio 1.0

Qt, 3D, Studio, Releases

Разработчики Qt анонсировали выпуск Qt 3D Studio 1.0 , которая предоставляет трёхмерную систему разработки пользовательского интерфейса, которая подходит как для разработчиков программного обеспечения, так и для графических дизайнеров.

Qt 3D Studio Editor

Qt 3D Studio - это инструмент для создания интерактивных 3D-презентаций и приложений. Редактор представляет собой кросс-платформенное приложение Qt, которое можно использовать в Windows, Mac и Linux. Вы можете импортировать дизайнерские активы из популярных инструментов разработки, таких как Photoshop, Autodesk Maya и The Foundry MODO.

Qt 3D Studio Editor & Viewer с функцией удаленного подключения

28 ноября 2017 г. 12:59

QtНаписание пользовательского Qt 3D аспекта - часть 1

Qt 3D, OpenGL, C++, Qt

Введение

Qt 3D имеет гибкую и расширяемую архитектуру, которая позволяет нам легко добавлять в нее свои новые функциональные возможности, не нарушая при этом существующие свойства. Функциональность Qt 3D разделена на так называемые аспекты, каждый из которых инкапсулирует конкретную предметную область, такую как рендеринг (Render Aspect), ввод (Input Aspect) или анимация (Animation Aspect).

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

22 мая 2018 г. 9:32
nrjjejdjdhhrjf

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

  • Результат 75 баллов
  • Очки рейтинга 2
21 мая 2018 г. 8:30
Nasty

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

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

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

  • Результат 58 баллов
  • Очки рейтинга -2
Последние комментарии
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. Т.е ...
Сейчас обсуждают на форуме
22 мая 2018 г. 16:50
vitaliy_antipov

Данные из QChartview в QTableWidget

Здравствуйте! Пишу приложение для парсинга текстового файла и вывода данных на график. Столкнулся с проблемой передачи данных от курсора мыши на графике в ячейку таблицы. mainwindow.h ...
22 мая 2018 г. 16:33
5_voron_5

Визуализация математических формул

Нужна помощь с визуализацией математических формул в qt на версии 5.4 и ниже, за деньги разумеется, кого интересует вот мыло svet_31_m@mail.ru
22 мая 2018 г. 6:57
EVILEG

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

Имено, класс-потомок. Если добавляли кнопки в графическом дизайнере, то нужно вызвать контекстное меню на кнопке в дизайнере, выбрать пункт "преобразовать в" либо "Promote to". Там будет ...
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

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