Обновить
4.84

Qt *

Кроссплатформенный инструментарий разработки ПО

Сначала показывать
Период
Уровень сложности

Python logging — вывод лога на QTextWidget (PyQt6)

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели2.7K

Было консольное Python приложение, в котором пишутся логи через стандартный модуль logging. Затем прикрутил GUI на PyQt6, конечно, хочется продублировать логи в какой-нибудь виджет в уголочке. Категорически не хочется ничего менять в консольной части, и спокойно использовать дальше стандартный logging.

В этом посте будет рассмотрено два примера. Простой - виджет, который дублировал бы вывод стандартного Python логгера. Усложнение - имеется несколько потоков, они тоже пишут логи. Нужно их логи тоже увидеть на виджете, но он в родительской части, а потоки не могут напрямую в него писать - получим сегфолт.

Читать далее

Разработка Desktop приложений на Python и библиотеки PySide6/PyQt6. Часть 1. Установка и первое приложение на PySide6

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели54K

Сегодня мы с Вами рассмотрим прекрасную библиотеку PySide6, которая является оберткой для взаимодействия с Qt при помощи языка Python, которые позволяет вам использовать Python для написания desktop-приложений Qt.

Читать далее

Выпуск среды разработки Qt Creator 12

Время на прочтение3 мин
Охват и читатели15K

Вчера, 23 ноября 2023 года вышел релиз среды разработки Qt Creator 12.

Qt Creator (ранее известная под кодовым названием Greenhouse) — свободная IDE для разработки на С, C++, JavaScript и QML. Разработана Trolltech (Digia) для работы с фреймворком Qt. Включает в себя графический интерфейс отладчика и визуальные средства разработки интерфейса как с использованием QtWidgets, так и QML. Поддерживаемые компиляторы: GCC, Clang, MinGW, MSVC, Linux ICC, GCCE, RVCT, WINSCW.

Что нового в Qt Creator 12

5-1 не в вашу пользу: 5 ошибок при создании игры

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели5.5K

«Блин, вот бы создать свою игру, да чтобы с этим да этим.....» — наверное каждый человек не раз сталкивался с подобным желанием, но 95% подобных желаний оканчивались ничем. В этой статье я хочу рассказать о том, как я делал свою игру и какие ошибки совершал. Учитесь на ошибках!

Читать далее

Размышление об Active Object в контексте Qt6. Часть 2

Время на прочтение4 мин
Охват и читатели2.8K

Пришло время написать вторую часть статьи. На этот раз мы рассмотрим нечто, к чему вы скорее всего придёте, работая над многопоточным кодом с использованием Qt.

Читать далее

Linux на мобилках, PDFium и как рендерить PDF в 2 раза быстрее

Время на прочтение5 мин
Охват и читатели7.4K

Привет, Хабр! В этой статье хотим рассказать о том, как мы протестировали три основные открытые библиотеки для работы с PDF-документами: Poppler, PDFium и MuPDF. Сравнили скорость рендера документов разного объёма, качество рендера, требования к технологиям разработки и условия лицензий для коммерческих продуктов на базе этих библиотек. Спойлер: победителем стала библиотека PDFium, но, как всегда, есть нюансы. Под катом обо всём по порядку.

Читать далее

ReeePlayer – интервальное повторение фрагментов видео для изучения иностранных языков

Время на прочтение7 мин
Охват и читатели6.9K

Начать смотреть видео на иностранном языке не просто. Этим объясняется большое количество статей с самыми разными советами:

• Смотреть с русскими субтитрами и не париться.

• Смотреть с иностранными субтитрами и переводить на паузе, если не понятно.

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

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

Читать далее

Device Manager. Обновление и мониторинг

Время на прочтение6 мин
Охват и читатели3.4K

Как уже говорилось ранее, DeviceManager — программная прослойка, которая используется для постановки заданий устройствам и получения результатов их выполнения. Сегодня речь пойдёт об организации процесса обновления программы и осуществления мониторинга рабочих мест, так как без этого проблематично развивать продукт и осуществлять его поддержку.

Читать дальше →

Работа с таймером в Sailfish OS на долгих интервалах времени

Время на прочтение5 мин
Охват и читатели2.3K

Введение


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

Как было сказано в одной из предыдущих статей, для добавления таймера в приложение на Sailfish OS можно использовать стандартный элемент Timer или его C++ аналог — QTimer. Однако, по умолчанию, работа этих таймеров приостанавливается на долгих промежутках времени из-за того, что устройство может уйти в «сон». Как раз с этой проблемой и столкнулись разработчики двух приложений, упомянутых выше.

В данной статье представлен стандартный для системы, но к сожалению недокументированный способ обработки такого поведения Sailfish OS.
Читать дальше →

Разработка для Sailfish OS: отображение графиков с использованием D3.js и QML Canvas

Время на прочтение8 мин
Охват и читатели7.8K
Здравствуйте! Данная статья является продолжением цикла статей, посвященных разработке приложений для мобильной платформы Sailfish OS. На этот раз речь пойдет о работе с графиками в Sailfish-приложении. Мы расскажем о поиске и подключении библиотеки и о том, как мы отображаем графики математических функций. Отметим, что предложенное решение не ограничивается платформой Saiflsh OS и в целом подходит для любого QtQuick приложения.
Читать дальше →

Разработка для Sailfish OS: работа с картами и геолокацией

Время на прочтение10 мин
Охват и читатели5.9K
Здравствуйте! Данная статья является продолжением цикла статей, посвящённых разработке приложений для мобильной платформы Sailfish OS. На этот раз речь пойдёт о том, как можно реализовать в приложении получение информации о географическом положении устройства, отображение карты с текущим местоположением и пройденным маршрутом.
Читать дальше →

Создание моделей данных для QComboBox

Время на прочтение10 мин
Охват и читатели28K


Всем привет! Хочу поделиться с вами двумя способами, как можно и нужно создавать модели данных для виджетов типа QComboBox в Qt. В конце статьи будет показано решение, для заполнения комбобокса из БД, одной строкой кода.
Читать дальше →

Разработка для Sailfish OS: Модульное тестирование Qt/C++ под Sailfish OS

Время на прочтение5 мин
Охват и читатели5K
Здравствуйте! Эта статья является продолжением цикла статей о тестировании Sailfish-приложений (предыдущая статья), и на этот раз мы рассмотрим модульное тестирование С++ в рамках проектов для Sailfish OS.
Читать дальше →

Ближайшие события

Простая реализация Stream из Java 8 в С++

Время на прочтение12 мин
Охват и читатели8.8K

Всем привет! В статье будет представлена упрощенная реализацию Stream из Java 8 на С++. Скажу сразу, что:


  • в отличии от Java не используются отложенные вычисления;
  • нет параллельных версий;
  • местами совмещает Stream и Collectors;
  • используются простые и готовые решения от STL, здесь нету чистого ФП, где только рекурсия;
  • не используются техники оптимизации.

В этой версии основной упор сделан на то, чтобы быстро и просто сделать велосипед). Про ФП упомянуто по-минимуму (комбинаторам внимание не уделено :)).


Интерфейс


template <typename Type>
class Stream : private StreamImpl<Type>
{
private:
    typedef StreamImpl<Type> Parent;
public:
    using Parent::Parent; // конструкторы унаследованы
    using Parent::data;
    using Parent::isEmpty;
    using Parent::count;
    using Parent::flatMap;
    using Parent::map;
    using Parent::reduce;
    using Parent::filter;
    using Parent::allMatch;
    using Parent::noneMatch;
    using Parent::groupingBy;
    using Parent::partitionBy;
    using Parent::minElement;
    using Parent::maxElement;
    ~Stream() = default;
};
Читать дальше →

Разработка Android приложений с использованием qt и android studio

Время на прочтение9 мин
Охват и читатели28K
Неактуально, кроме постановки задачи. Правильное решение в следующей статье.
Добрый день, уважаемые хабровчане! В этой статье я хочу рассказать о своём опыте использования qt и android studio. А именно о том, как мне надо было в qt нарисовать текст и передать в андроид студию. Несмотря на простоту задачи, решение её заняло у меня довольно много времени и может быть кому-нибудь когда-нибудь где-нибудь сэкономит массу времени. Статья в каком-то смысле претендует на изобретение велосипеда, но в интернете я не нашёл решения. Кому интересно — добро пожаловать под кат!
Читать дальше →

Реализация симулятора математической игры «Life»

Время на прочтение3 мин
Охват и читатели6.7K
Предисловие

В общем, собрался я как-то для восстановления программисткой формы начать писать мини-проектики разных игр и задач, чтобы восстановить и улучшить эту самую программистскую форму. Первый выбор пал на шахматные задачи и на математическую игру Дж. Конве «Life».

Сегодня я расскажу о том, как реализовывал симулятор игры «Life» на базе кроссплатформенной библиотеки Qt. Делал всё на Qt Widgets без использования QML.
Читать дальше →

Qwt и Qt Creator. Часть 3: график как элемент Designer Form

Время на прочтение6 мин
Охват и читатели27K


В примерах использованы Qt Creator 3.0.0 (MinGW) и Qwt-6.1.0.

Для понимания этой статьи читатель должен иметь начальный опыт разработки windows-приложений в среде Qt Creator, понимать концепцию «сигнал-слот». Также рекомендуется познакомиться с частью №1 и №2 цикла моих статей про Qwt:


habrahabr.ru/post/211204
habrahabr.ru/post/211867

Qwt – графическая библиотека, позволяющая значительно упростить процесс визуализации данных в программе. Упрощение заключается в следующем: нет необходимости вручную прописывать элементы отображения, такие как шкалы координат, сетки, кривые данных и проч. Следует лишь задавать параметры этих элементов.

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

В части №3 мы сделаем следующее:

• добавим виджет для отображения графика в Designer Form, что позволит использовать элементы управления Qt Creator;
• построим демонстрационную кривую, реализуем базовые удобства работы с графиком: возможность перемещения по полю графика, его приближение/удаление, отобразим координаты курсора при его перемещении;
• отобразим координат клика в строке состояния Designer Form;
• переместим кривую вдоль оси х, используя стандартные элементы управления из Qt Creator.

Читать дальше →

Qt сборка драйвера для работы с PostgreSQL (Windows)

Время на прочтение2 мин
Охват и читатели27K
Небольшое лирическое отступление:
Написать эту заметку меня сподвигло наличие в интернете огромного количества инструкций которые просто цитируют документацию, а реально не работают. Т.к. я работаю с Qt время от времени, то не знаю как обстоят дела с данной проблемой в Qt5.


Проблема


В установку по умолчанию (по крайней мере для версии 4.8.4) драйвер для работы с Postgres не входит.
Официальная документация предлагает собирать его очень простым способом http://qt-project.org/doc/qt-4.8/sql-driver.html#qpsql, но если вы скачивали уже собранное Qt, то будете изрядно озадачены тем, что сборка проходит без ошибок, но ничего не работает.
Читать дальше →

Подкаст «Заметки о Qt» s02e02

Время на прочтение1 мин
Охват и читатели5.1K
Мы с Vass записали и выложили вторую серию второго сезона подкаста «Заметки о Qt».

Сам подкаст на rpod.ru — qt-notes.rpod.ru/287388.html
Результаты конкурса внутри!
Читать дальше →

Ленивый map на Qt

Время на прочтение2 мин
Охват и читатели8.5K
В Qt есть возможность параллельного выполнения вашей функции для каждого члена последовательности — QtConcurrent::mapped() и его друзья.

Проблема только в одном — результаты сохраняются в QVector. Поэтому, когда мне понадобилось выполнить свою функцию для 65 миллионов кусочков данных, я не стал мучать оперативку, а написал примерно то же самое, только более ленивое, то есть новые значения будут вычисляться, только если старые уже использовались.
Читать дальше →

Вклад авторов