Реклама

Поиск

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

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

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

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

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

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

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

User Guide #08 - Ruby - управляющие структуры

TutorialRubycase, for, Ruby, ruby lesson, ruby уроки, user guide, while, руководство пользователя64

В данной главе больше поговорим об управляющих структурах в Ruby.

case

Мы используем оператор case для проверки последовательности условий. Это действительно очень похоже на switch в C и Java, но является более мощным инструментом, как мы увидим далее.

ruby> i=8
ruby> case i
    | when 1, 2..5
    |   print "1..5\n"
    | when 6..10
    |   print "6..10\n"
    | end
6..10
   nil

Реклама

User Guide #10 - Ruby - Объектно-ориентированное мышление

TutorialRubyRuby, ruby lesson, ruby уроки, user guide, ооп, руководство пользователя56

Объектно-ориентированный является очень броской фразой. Называя что-либо объектно-ориентированным, вы можете звучать весьма умно. Ruby позиционирует себя как объектно-ориентированный язык сценариев, но что на самом деле означает "объектно-ориентированный"?

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

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

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

Qt/C++ - Урок 057. Ошибки вывода qDebug() для чисел с плавающей точкой

TutorialQtQt, qDebug, float348

При разработке программного обеспечения на Qt довелось столкнуться с одним нюансом при выводе чисел с плавающей запятой через qDebug(). Проблема заключается в том, что выводятся не все символы после запятой. Тем же самым грешит и вывод std::cout .

Подобный user case может возникнуть в следующей ситуации:

У вас имеется объект QString, который содержит некое число "8564.26495574", которое мы переводим в число с плавающей точкой с помощью метода toDouble(), и проверяем результат с помощью вывода qDebug() , но вот незадача, вывода оказывается ложным.

QString str("8564.26495574");
qDebug() << str.toDouble();

// В выводе получаем -> 8564.26

Хотя на самом деле мы получаем совершенно правильное число, то есть из строки было получено число 8564.26495574 , просто вывод qDebug() показывает округлённый результат.

Тоже самое можно наблюдать, если попытаться просто вывести значение числа double в qDebug().

double a = 8564.26495574;
qDebug() << a;

// В выводе получаем -> 8564.26

Qt/C++ - Урок 040. Типы данных различных Баз Данных в Qt

TutorialQtDECIMAL, INTEGER, MS SQL, Qt, SQL, типы данных113

В процессе разработки приложения под Qt , которое должно будет работать с базами данных необходимо учитывать тот нюанс, что драйвер Qt для целевой Базы Данных может не поддерживать все типы данных, которые Вы могли заложить в Вашу Базу Данных. Например, один из подобных примеров, с которым столкнулся один из Читателей сайта, это проблема с отображением типа данных DECIMAL через QSqlTableModel . В то время, как при разработке приложения на C++ Builder этот тип данных отлично отображался в представлении.

А работа производилась с базой данных MS SQL , для которой использовался драйвер ODBC . Результаты работы приложений на C++ Builder и на Qt приведены на нижеследующих рисунках. Разница во внешнем виде таблиц состоит в том, что в приложении на Qt отсутствуют значения в представлении, где тип данных в базе данных был объявлен как DECIMAL .

Реклама

Реклама