Реклама
24 февраля 2016 г. 0:00

XlibXUngrabKey

HotKey, linux, X11, XUngrabKey

Синтаксис

XUngrabKey(display, keycode, modifiers, grab_window)
      Display *     display;
      int           keycode;
      unsigned int  modifiers;
      Window        grab_window;

Аргументы

display	      // Описывает соединение с X Сервером
keycode	      // Описывает код клавиши (KeyCode) или любой код (AnyKey)
modifiers     // Указывает установку конкретных масок модификаторов 
              // или использование любых модификаторов (AnyModifier). 
              // Маска является поразрядным ИЛИ для проверки битов маски.
grab_window   // Указывает захватываемое окно
15 февраля 2016 г. 21:07

QtQt Linux - Урок 001. Автозапуск Qt приложения под Linux

Qt, Linux, Ubuntu, autorun, автозапуск

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

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

Допустим название проекта и соответственно название исполняемого файла будет AutorunLinux, тогда потребуется создать исполняемый файл AutorunLinux.desktop по следующему пути:

~/.config/autostart/AutorunLinux.desktop

Содержимое исполняемого файла нужно сделать аналогичным другим файлам автозапуска других приложений, чтобы гарантировано получить требуемый результат. В случае с Ubuntu Linux 15.04/15.10 содержимое файла получилось следующее:

[Desktop Entry]
Type=Application
Exec=/home/dekadent/QT/Projects/build-AutorunLinux-Desktop_Qt_5_5_1_GCC_64bit-Debug/AutorunLinux
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_GB]=AutorunLinux
Name=AutorunLinux
Comment[en_GB]=AutorunLinux
Comment=AutorunLinux
2 февраля 2016 г. 22:10

QMLQML - Урок 023. Охота за багами при передаче указателя на QObject в QML

Qt, QML, указатель, JavaScriptOwnership, pointer, bug

Одними из самых мерзких и мало предсказуемых багов являются те, которые возникают в неопределённый момент времени. К числу таких можно отнести баг, который проявляется при передаче указателя на QObject в QML слой. Проблема заключается в том, что если у QObject отсутствует родитель, то при передаче в слой QML происходит смена владельца объекта, то есть ему устанавливается JavaScriptOwnership. В итоге, когда в QML слое пропадут все ссылки на данный объект, то он будет удалён сборщиком мусора QML. Соответственно, все ссылки в C++ слое окажутся невалидными. А приложение при попытке обращения по этим ссылкам молча схлопнется, ничего не сообщив о причине краха.

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

Стоит отметить, что данное правило не будет применяться к объектам объявленным в качестве Q_PROPERTY.

Но для демонстрации проблемы можно воспользоваться QML функцией gc() , которая ускорит сборку мусора.

2 февраля 2016 г. 21:37

QtРеализация игры "Пятнашки" на Qt

Qt, Пятнашки, Fifteen

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

Поэтому, представляю Вашему вниманию, работу Ильи Дыдышко - игра "Пятнашки", написанную с применением библиотеки Qt. После небольшой консультации с моей стороны, Илья пропал на некоторое время. После написания работоспособного варианта игры, Илья поделился своей работой с проектом Evileg. На сайте выкладываю работоспособный, но не окончательный вариант проекта, поскольку автор планирует дошлифовать все острые углы в программном коде.

28 января 2016 г. 22:11

QtQt/C++ - Урок 043. Qt Single Application - запускаем только один экземпляр приложения

QLockFile, QSharedMemory, QSystemSemaphore, Qt, Qt Single Application

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

Для решения данной задачи можно использовать два следующих способа:

  • С использованием QLockFile - когда создаётся временный файл, который уничтожается при закрытии приложения. При этом при запуске второго экземпляра приложения происходит проверка на существование данного файла и если файл уже создан одним открытым экземпляром приложения, то второй экземпляр автоматически закрывается;
  • С использованием QSystemSemaphore и QSharedMemory - в данном случае создаётся сегмент разделяемой памяти и производится попытка присоединить его к существующему сегменту по уникальному идентификатору. Если попытка присоединения прошла успешно, значит один экземпляр приложения уже создан. Соответственно, сообщаем об этом пользователю и закрываем приложение. В случае, если попытка присоединения прошла безуспешно, то создаём выделяем сегмент памяти для приложения и запускаем первый экземпляр.
28 января 2016 г. 18:24

QtQt и Direct3D 12 - Первая встреча

D3D12, Direct3D, Qt, Qt Blog, QtD3D12Window

Перевод официальной новости, автор Laszlo Agocs

Лицо графических API изменяется. Qt Quick 2 был выпущен в 2012 году с Qt 5.0, и опирался на OpenGL и OpenGL ES 2.0. С тех пор были введены изменения и улучшения - был введён Qt Quick 2D Renderer, были проведены эксперименты с программной растеризацией, и добавлена система обеспечения для новейших версий OpenGL в весь графический стек Qt. Однако, как заметил Lars в своём выступлении на Всемирном саммите Qt 2015, ситуация изменяется: новые, низкоуровневые, более эффективные API, такие как Vulkan, Metal и Direct3D 12, собираются стать широко доступны. Некоторые из них ориентированы на конкретные платформы, делая их лучшим выбором в вопросе таргетирования на конкретные платформы, в то время как другие, как ожидается, будут поддерживать широкий спектр платформ. В тоже время, делая комплексные прогнозы, ускорение с графическим API не всегда является лучшим выбором: традиционно, рабочий стол пользовательского интерфейса на устаревшем железе иногда лучше запустить с устаревшей отрисовкой на базе CPU.

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

Такие исследовательские работы часто приводят к полезным эффектам, и эта запись об одном таком. Простой Qt модуль включающий интеграцию с Direct3D 12 в отдельном Qt окне - или в качестве альтернативы приложение основанное на QWidget - и делающий это процесс легким для начала экспериментов с современными методами D3D, в то время как Вы продолжаете наслаждаться знакомыми API, инструментами и средой разработки Qt и предлагаемой ей экосистемой.

27 января 2016 г. 21:27

QtИспользование Qt 3D для визуализации музыки

Audio, QML, Qt, 3D, quick

Перевод официальной новости, автор Titta Heikkala

Так как идёт развитие Qt 3D модуля, Мы хотели бы предоставить его на проверку и тестирование того, как можно визуализировать музыку, используя этот модуль. Результатом этого эксперимента стал новый пример, Audio Visualizer Example, для Qt 3D модуля.

26 января 2016 г. 13:59

QtУведомление для всех пользователей Qt Cloud Services

Cloud Services, Qt, Qt Cloud Services

Перевод официальной новости

Более года назад Мы запустили Qt Cloud Services, который включает в себя Managed Runtime Services, Managed Application Runtime (MAR), Managed Database (MDB) and Engin.io. С тех пор Мы получили обширную обратную связь и увидели удивительные облачные приложения опубликованные на данной платформе. Однако, использование наших услуг не было таким, как Мы надеялись. Следовательно, в настоящее время Мы наблюдаем падение услуг Qt Cloud Services. Между тем и мы будем прекращать дальнейшие продажи.

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

Источник Qt Blog

23 января 2016 г. 21:48

QtQt/C++ - Урок 042. PopUp уведомление в стиле Gnome с помощью Qt

Gnome, PopUp, Qt, всплывающее уведомление, Уведомление

Функционала стандартных уведомлений системного трея порой может не хватать для реализации смелых задумок по стилизации приложения. Поэтому рассмотрим вариант реализации всплывающего сообщения в стиле PopUp уведомления DE Gnome , а именно, как показано на ниже следующем рисунке.

PopUp уведомление в стиле Gnome

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

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

Будет реализовано плавное появление в течении 150 миллисекунд и исчезновение, через три секунды.

18 января 2016 г. 11:37

QtQt Charts 2.1.0 Release

Charts, Qt, Qt Charts

Перевод официальной новости.

Мы счастливы объявить, что в предстоящий выпуск Qt 5.6.0 будет включён Qt Charts 2.1.0 add-on. Этот выпуск Qt содержит новый функционал, и исправлены баги по пользовательским запросам.

Краткое введение о том новом, что есть в этом модуле: Qt Charts является модулем, который предоставляет комплект простых в использовании компонентов графиков. Доступны следующие типы графиков: LLine, Spline, Area, Scatter, Bar, Pie, Polar and Box-and-Whiskers Chart.

Реклама
  • leha
  • 20 октября 2017 г. 11:38

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

  • Результат 63 баллов
  • Очки рейтинга -1
  • faust
  • 19 октября 2017 г. 18:53

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

  • Результат 100 баллов
  • Очки рейтинга 10
  • faust
  • 19 октября 2017 г. 15:49

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

  • Результат 91 баллов
  • Очки рейтинга 8
Последние комментарии
  • EVILEG
  • 21 октября 2017 г. 3:06

Qt/C++ - Урок 031. QCustomPlot - строим график по времени

Добавил архив с проектом

  • EVILEG
  • 20 октября 2017 г. 20:06

Qt/C++ - Урок 031. QCustomPlot - строим график по времени

После работы поищу, должен где-то быть на винте.

  • Миша
  • 20 октября 2017 г. 20:04

Qt/C++ - Урок 031. QCustomPlot - строим график по времени

не могли бы вы выложить архив с рабочей версией скрипта?

  • EVILEG
  • 20 октября 2017 г. 20:03

Qt/C++ - Урок 030. QCustomPlot - быстрый старт в работе с графиками

Использование дизайнера в Qt Creator и использование ui файлов является распространённой практикой в Qt фреймворке. Написать отдельную статью про то, что это такое? - может быть. Опи...

  • Миша
  • 20 октября 2017 г. 19:43

Qt/C++ - Урок 030. QCustomPlot - быстрый старт в работе с графиками

Но почему вы это не описали? Не могли бы вы описать.

Сейчас обсуждают на форуме
  • cordsac
  • 19 октября 2017 г. 15:49

How can I select the QGraphicView Item and change the properties

Ok I'll check it sir,If you can please do article(tutorial) about this,Its really useful.Thank you if you can give me some sample code when you free.thanks again

  • cordsac
  • 17 октября 2017 г. 19:28

How can I open SVG file through QT

Okay,Thank you sir :)

  • EVILEG
  • 16 октября 2017 г. 20:34

Qt, Загрузка изображения в QImage

Сам view нужно поместить в внутри окна, а не просто создать его. Можете создать в графическом редакторе Qt Creator`а окно, набросать там QGraphicsView и потом посмотреть в сгенерированном...

  • mihenze
  • 15 октября 2017 г. 21:30

Рисуем линию QGraphicsItem за мышью

Большое спасибо!

  • EVILEG
  • 15 октября 2017 г. 18:58

Описание класса С++ в QtCreator

Для начала добавьте недостающие методы и участники для Q_PROPERTY. Для этого вызовите контекстное меню через ПКМ у Q_PROPERTY, там будет пункт "добавить недостающие члены". Автоматически...