Обо мне

Моя фотография
Индивид, которому нравится слушать качественную музыку, а потом делиться впечатлениями с другими!

суббота, 5 ноября 2011 г.

[Eclipse, Android] Автоматическое форматирование кода - проставление отступов

Удобное автоматическое форматирование кода, в данном случае проставление indent'ов (отступов) в Eclipse, доступно по-умолчанию. Достаточно выделить весь текст (Ctrl+A) и нажать сочетание клавиш Ctrl+I.

четверг, 3 ноября 2011 г.

[Разное] Домены .tk

На сайте http://www.dot.tk/ru/index.html?lang=ru можно зарегистрировать любой домен .tk бесплатно, на срок до года.

У блога теперь есть адрес http://slowtone.tk и http://judicial.tk

[Разное] цитата

Программист с прошлого места работы написал в аську:

"Хорошо пишешь. Грамотно и аккуратно. Я, увы, не так"

Приятно слышать, но... не про меня :)

понедельник, 31 октября 2011 г.

[Amazon Kindle] пару слов


Обзоров о замечательной электронной читалке Amazon Kindle в сети достаточно много. Поэтому не ожидайте увидеть здесь нечто новое – всего лишь субъективные впечатления. В первый раз вживую устройство подобного рода я увидел у друга – был это новенький на то время nook. До этого опыт чтения электронных книг у нас уже имелся – на компьютере и на маленьком экране телефона посредством программы ReadManiac. Но специализированное устройство – это было необычно! И удобно.

И вот, наконец-то, я созрел для приобретения сего девайса: было прочитано море информации, обзоров и сравнений. Выбор пал на киндл. К тому времени актуальной была последняя модификация читалки, выпущенная в 2011 году. Покупать дорогую не хотелось – выбрал вариант, который в Америки стоил 79 – рекламный. Поначалу сам факт наличия в названии приставки «рекламный» настораживал, однако после прочтения некоторых комментариев на форумах все сомнения были развеяны.

Подходящий продавец был найден на онлайнере. Заказ был сделан. Буквально через неделю в руках я держал запечатанную коробочку с новый, на этот раз, своим киндлом. Комплект, честно говоря, спартанский – читалка, кабель usb и карточка со ссылкой на лицензионное соглашение. Всё! Больше ничего.

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

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

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

В наличии также wi-fi, которым пока еще не довелось попользоваться.

воскресенье, 30 октября 2011 г.

Ностальгируем 1

Что-то захотелось немного поностальгировать, вдохнуть немного жизни в свой ежедневник.

Когда-то, как сейчас представляется, очень давно лет 10 назад, когда у меня появился первый компьютер, мне, как и большинству моих ровесников (14 лет), первым делом хотелось только одного играть в компьютерные игры. Оно и понятно - слишком долго мечталось о, как тогда казалось, недостижимом - собственном компьютере. Помню в каком восторге пребывал, когда изредка удавалось попасть к тете на работу и поиграть в летный симулятор на рабочем компьютере, либо сходить в компьютерный клуб и погонять в Jazz Rabbit. А по скольку времени мы обсуждали чей-нибудь компьютер...

суббота, 29 октября 2011 г.

По поводу Андроид

Уважаемые немногочисленные читатели, ежели таковые имеются! Считаю своим долгом сообщить, что всвязи с недавно появившимся интересом к программированию под платформу андроид, отныне помимо заметок о Qt буду также размещать небольшие заметки о программировании под Android.

Спасибо за внимание! 

четверг, 27 октября 2011 г.

Amazon Kindle


Итак, еще одна мечта идиота сбылась. Стал счастливым обладателем электронной читалки Amazon Kindle? Тот который в Америке за 79 $. Впечатление – я просто восхищен девайсом, слов нет! Давно раздумывал о покупке, но только сейчас все-таки решил – надо!

Комплект, конечно, спартанский – сама читалка, кабель для подзарядки от компа и талон с лицензионным соглашением. Для преобразования книг из fb2 в mobi скачал калибри, которая со своими обязанностями справляется на ура!

понедельник, 24 октября 2011 г.

Ни о чем. 1


Итак, давно не писал, поэтому немного заметок сегодня добавлю.

Из последнего – начал изучать java, android sdk.

Изучаю теорию и практику. Интересно.

Уже потихоньку переписываю Помощник по датам для мобильных устройств.


вторник, 18 октября 2011 г.

HandyRecovery - верный помощник в восстановлении файлов


Довольно редко, но возникает ситуация, когда нужно восстановить нечаянно удаленные файлы. Существует много программ-помощников: EasyRecovery, GoBack, GetDataBack, Active@Undelete и т.д. Ранее все пользовался последней из приведенного списка, но в последний раз, когда понадобилось восстановить несколько файлов ни одна из перечисленных выше программ не смогла – Первая и последняя файлов почему-то не увидели, а GoBack так и вовсе подвисла.

Поэтому было принято решение найти что-то новое, простое и функциональное. После непродолжительных поисков приятно удивила программа-утилита HandyRecovery, Которую я скачал в виде portable версии. Работает быстро, файлы показывает с оригинальными именами. Что еще нужно?!

четверг, 1 сентября 2011 г.

Первая программа

Совершенно неожиданно на почтовый ящик пришло письмо обменяться ссылками на сайты. При чем некто предлагал поставить ссылку не на этот блог, а на давно-давно забытый сайт http://froozer.narod.ru/, который был сделан в далеком 2003 году и посвящен тогда еще маленькому результату начала увлечения программированием - программе QBookShelf. Я сперва даже обрадовался, так как из-за неполадок винчестера когда-то утратил исходный код первой и второй версии приложения, который нигде более не сохранился. Но, как оказалось, напрасно я радовался - на сайте размещен исходник версии 0.3, которая мало чем отличается от текстового редактора. Однако, для меня все равно представляет ценность, так как это первая моя программа на плюсах, корявая, но родная. Спасибо неведомому спамеру за предоставленную возможность вспомнить и по-ностальгировать. Искренне благодарю.



П.С. Впечатлило название, которое я когда-то придумал для сайта - BookShelf - last russian reader's hope...

П.П.С. На самом деле хоть код и утрачен, но осталась программа-ответвление - KHaaliReader.


пятница, 19 августа 2011 г.

TitleRead - ваш надежный товарищ

Часто ли у Вас зарождалось подозрение, что кто-то в ваше отсутствие на работе (например, на обеде) использует ваш компьютер без вашего ведома?

Как быть, Вы можете прочитать на страничке моей новой программки

четверг, 18 августа 2011 г.

[Qt, WinApi] получение иконки чужого процесса

В данной заметке хотел бы показать как просто можно получить иконку чужого процесса.

[Qt, WinApi] получение информации об архитектуре процессора

QString processorInfo()
{
#if defined(Q_WS_WIN32)
SYSTEM_INFO info;
    GetSystemInfo(&info);
switch(info.wProcessorArchitecture)
{
#ifdef PROCESSOR_ARCHITECTURE_AMD64
            case PROCESSOR_ARCHITECTURE_AMD64:
                return "x86_64";
                break;
#endif
            case PROCESSOR_ARCHITECTURE_INTEL:
                return "x86";
                break;
            case PROCESSOR_ARCHITECTURE_IA64:
#ifdef PROCESSOR_ARCHITECTURE_IA32_ON_WIN64
            case PROCESSOR_ARCHITECTURE_IA32_ON_WIN64:
#endif
                return "IA64";
                break;
            default:
                return "Unknown";
                break;
}
#endif

return QString();
}

среда, 17 августа 2011 г.

[Qt, WinApi] имя текущего пользователя

[Qt, WinApi] получение заголовка активного окна

Добрый день! Хотел бы разместить несколько небольших заметок об использовании WinApi функций в Qt. Начну, пожалуй, с простого - получение заголовка активного окна.



Не забудьте подключить заголовочный файл qt_windows.h к вашему проекту.


пятница, 29 июля 2011 г.

[Delphi, Oracle] Создание информационного табло

Хотел бы разместить здесь небольшую свою заметку о том, как создавал в свое время систему информационных табло для предыдущего места работы. Оригинал статьи на Хабре

В суде я работаю работал секретарем судебного заседания – помощником судьи, но иногда меня привлекают для участия в более сложных и важных мероприятиях, таких как, например, создание очередного программного обеспечения для внутреннего пользования (замечу сразу - никаким техническим образованием не обладаю).

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


[Qt] Настройка колонок для QHeaderView в QTreeWidget

При работе со списками часто возникает необходимость предоставить пользователю возможность настраивать колонки, как это показано на рисунке ниже:


Когда-то очень давно сделал себе такой класс (существует несколько разновидностей, но сегодня выложу для QTreeWidget)

Скачать архив с классом

Использовать достаточно просто:

MenuForHeaderView *mm = new MenuForHeaderView(this);
QMenu *headerMenu= new QMenu;
docTree->header()->addAction(headerMenu->addMenu(mm->createMenu(this, docTree) ));
docTree->header()->setContextMenuPolicy(Qt::ActionsContextMenu);

foo_qip_nowplaying

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

Вот, пожалуйста:
foo_qip_nowplaying_0.5.1 English
- foo_qip_nowplaying_0.5.1 Русская версия

Ну, и в качестве бонуса, файл справки:
- Скачать

четверг, 28 июля 2011 г.

[Qt] Создание нового документа MS Word с параметрами по-умолчанию

Добрый день! Возникла необходимость создать новый документ Microsoft Word с заданными по-умолчанию некоторыми параметрами, например, пароль на открытие файла. Достичь желаемого результата можно очень и очень просто! Нам на помощь опять приходит нет-нет, не Чип и Дейл, а сокровищница знаний MSDN...


четверг, 19 мая 2011 г.

Saladin - двухпанельный файловый менеджер на Qt

На форумах по программированию часто встречаются топики, в которых разработчики либо интересуются как создать свой собственный, либо представляют на суд общественности уже готовый. Qt-сообщество не является исключением, наверное, на каждого из нас находило вдохновение по написанию собственного файлового менеджера. Под windows двухпанельных менеджеров пруд-пруди, чего стоит один только TotalCommander со своими почти неограниченными возможностями.. Под linux дела обстоят несколько хуже, Total-подобных программ достаточно мало - DoubleCmd, EmelFm, Krusader, который является наиболее удачным аналогом своего windows собрата, однако безбожно увяз в KDE зависимостях. Из интересных проектов, которые были бы написаны на чистом Qt, без разного рода громоздких сторонних зависимостей, в принципе, ничего стоящего не встречается. На нашем дорогом форуме для программистов однажды забрезжил свет надежды в виде PanterCommander, однако проект так завершен и не был. Из созданных исключительно под windows os, честно скажу, заинтересовал лишь один - Saladin, который использует на всю мощь возможности операционной системы и написанный нашим соседом-поляком.


Ознакомиться с возможностями программы вы можете проследовав на официальный сайт, расположенный по адресу - http://saladin.mimec.org/


воскресенье, 1 мая 2011 г.

[Qt] Статическая сборка под windows посредством Microsoft Visual Studio 2008. Это просто!

Для начала скачиваем с сайта Nokia пакет с исходным кодом библиотеки Qt и распаковываем его.
Затем переходим в данную директорию и открываем командную строку (консоль) из состава Microsoft Visual Studio Command Prompt и запускаем configure.exe со следующими параметрами:


-static
-release
-fast
-no-qt3support
-qt-gif
-qt-libpng
-qt-libmng
-qt-libjpeg
-qt-libtiff
-no-dsp
-no-vcproj
-no-plugin-manifests
-mp
-nomake
demos
-nomake
examples

После того, как процесс конфигурирования будет закончен, вводим команду nmake для запуска  сборки. По окончании удалим ненужные созданные в процессе сборки файлы командой nmake confclean.

четверг, 28 апреля 2011 г.

[Qt] Минимум информации при сборке

Собственно сабж. В файл проекта (.pro) добавьте в секцию CONFIG опцию silent.

Сегодня буду краток 

среда, 27 апреля 2011 г.

[Быт] И все-таки... Как починить ручку в Chicco Tech 6 wd. Часть 2. Заключительная

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

Таким образом, разобрав ручку - уберите пластиковые кнопки.

суббота, 23 апреля 2011 г.

[Быт] Поломалась ручка в коляске Chicco Tech 6 wd. Как починить

Столкнулись с такой проблемой, как поломка ручки в коляске Chicco Tech 6 wd - перестала держаться, болтается сверху вниз, кнопки запали и не отжимаются. Разобрать не представлялось возможным, инструкций, руководств или хотя бы подсказок в интернете тоже не нашлось. Вчера наконец разобрались как быть. В нашем случае, пришлось просверлить пластиковую кнопку по центру (можно сделать шилом). Прямо по центру находится шуруп, открутив который ручка быстро разбирается. Далее уже на что фантазии хватит


[Qt] Сборка vlc-qt. Пошагово. Часть 1

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

1. Скачиваем саму библиотеку vlc-qt по ссылке http://qt-apps.org/content/show.php/VLC-Qt+library?content=133649

2. Скачиваем исходный код проигрывателя VLC по ссылке http://sourceforge.net/projects/vlc/files/1.1.9/vlc-1.1.9.tar.bz2/download, а также собранный дистрибутив проигрывателя, который сразу же устанавливаем.

3. Скачиваем дистрибутив CMake, который понадобится нам для сборки библиотеки по ссылке http://www.cmake.org/cmake/resources/software.html

4. Убеждаемся в том, что у нас в системе есть библиотека Qt, компилятор mingw32 и, что пути к ним прописаны в системном PATH.

5. Создаем директорию, например, D:\VLC

6. Распаковываем в нее исходники библиотеки vlc-qt, которую скачали в п.1 (у нас должно получиться D:\vlc\libvlc-qt-0.5.0\)

7. Из исходников VLC копируем (распаковываем) папку vlc, которая находится в папке vlc-1.1.9\include\vlc в D:\vlc\libvlc-qt-0.5.0\src (должно получиться D:\vlc\libvlc-qt-0.5.0\src\vlc)

8. Создаем каталог D:/vlc/libvlc-qt-0.5.0/build

9. Устанавливаем Cmake и запускаем cmake gui

10. "Where is the source code" нажимаем кнопку Browse Source и выбираем каталог D:/vlc/libvlc-qt-0.5.0

11. "Where to build the binaries" нажимаем кнопку Browse Build ... и выбираем каталог D:/vlc/libvlc-qt-0.5.0/build

12. Нажимаем кнопку Configure

13. Получаем ошибку. Не расстраиваемся и делаем все в соответствии с изображением из следующего пункта

14.

Смысл в том, чтобы для поля LIBVLC_INCLUDE_DIR выбрать в качестве параметра директорию D:/vlc/libvlc-qt-0.5.0/src/vlc (то есть ту папку в которую мы копировали заголовочные файлы из архива с исходниками самого проигрывателя)

Для параметра LIBVLCCORE_LIBRARY выбираем библиотеку C:/Program Files/VideoLAN/VLC/libvlccore.dll, которая установилась с проигрывателем VLC из п. 2

Для параметра LIBVLC_LIBRARY выбираем библиотеку C:/Program Files/VideoLAN/VLC/libvlc.dll, которая установилась с проигрывателем VLC из п. 2

Установленные библиотеки нужны для линковки.

15. Снова нажимаем Configure

16. Нажимаем на кнопку Generate

17. Закрываем Cmake

18. Открываем командную консоль (Меню Пуск-Выполнить-cmd либо через Total Commander, если пользуетесь им, Open Terminal Here)

19. В консоли переходим в нужный нам каталог, если не перешли ранее, cd D:/vlc/libvlc-qt-0.5.0/build

20. Собираем библиотеку. В консоли вводим команду mingw32-make (при условии, что путь к компилятору у вас добавлен в PATH, либо пишете полный путь к компилятору D:\Qt\2010.05\mingw\bin\mingw32-make.exe

21. ждите

22. Вроде собралось без ошибок.

Всё, на этом сборка собственной библиотеки закончилась. На днях я подробно расскажу о том, как подключить к своему проекту данную библиотеку. Для нетерпеливых рекомендую ознакомиться с примерами vlc-qt. Там все ясно и понятно.

Обсуждение на Russian Qt forum

Постоянный партнер блога:

Профессиональные услуги адвоката в Минске. Абрамович В.А. Корректировка таможенной стоимости. Защита интересов в хозяйственных судах. Признание и приведение в исполнение судебных постановлений иностранных судов на территории Республики Беларусь. - Abramovich.by

Syntax Code Highlighter

Долгие попытки найти достойный онлайн-сервис для подсветки кода, наконец-то, увенчались успехом - pastebin.com удовлетворяет всем потребностям.

[Qt] Рисуем сетку в *view при помощи QStyledItemDelegate

Как нарисовать сетку в QTreeView, -Widget и так далее? Достаточно просто и есть даже несколько примеров из состава Qt на основе QItemDelegate. Однако минусом такой реализации будет являться то, что при использовании вышеназванного делегата становится невозможным использование Qt StyleSheet (qss) вкупе с View. Для использования со стандартным стилем самими разработчиками рекомендуется использование QStyledItemDelegate.

Таким образом, нарисуем сетку:

gridlinedelegate.cpp


gridlinedelegate.h

четверг, 21 апреля 2011 г.

[Qt] очистка QHeaderView

Возникла ситуация, когда один и тот же QTreeWidget необходимо использовать для отображения различных данных с разным количеством столбцов в зависимости от ситуации. Как таковой функции clear() у QHeaderView нет, а использование reset() к желаемому результату не приводит, и столбцы не очищаются.

Решением в данной ситуации является использование treeWidget->setColumnCount(0) перед отображением новых данных.

понедельник, 18 апреля 2011 г.

Инфо-Киоск

Вот, собственно, внешний вид моего информационного киоска:


[Qt] запрет выделения текста в QWebView

Хотел бы продолжить серию заметок по Qt, пока переписываю информационный киоск. Как я уже раньше говорил, для отображения текста использую QWebView, в котором полностью скрыл скроллбары (полосы прокрутки) и выделение текста:

frame->evaluateJavaScript("document.onselectstart=function() {return false}");

пятница, 15 апреля 2011 г.

[Qt] скрытие полос прокрутки в QWebView

Сейчас активно переписываю свой информационный киоск для хозяйственного суда с Delphi на Qt. Одним из элементов отображения текстовой информации я выбрал QWebView (webkit).

Важным условием просмотра информации являлся программный скролл и отсутствие видимых полос прокрутки - второе достигается достаточно просто:

QWebFrame* frame = browser->page()->mainFrame();
frame->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAlwaysOff);
аrame->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAlwaysOff);


пятница, 8 апреля 2011 г.

суббота, 2 апреля 2011 г.

[Qt] Тень используя QGraphicsDropShadowEffect

Если Вас интересует как в Qt можно добавить тень к любому виджету, то вот, например, так:

QGraphicsDropShadowEffect* shadowEffect = new QGraphicsDropShadowEffect(this);
shadowEffect->setBlurRadius(6);
shadowEffect->setOffset(3);
ui->topNameLabel->setGraphicsEffect(shadowEffect);

Согласитесь, проще некуда! :)

пятница, 1 апреля 2011 г.

[Qt] Создание красивого всплывающего окошка OSD

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

Под линуксом с этим проблем нет - libnotify поможет всем. Однако хотелось кросс-платформенного решения, под определение которого подпадал widget для вывода OSD из состава музыкального проигрывателя Clementine.

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

В итоге получаем:


Если кому интересно, то я выложил отдельный архив:
http://dl.dropbox.com/u/6896945/prettyosd.zip

Использовать можно следующим образом:

osd = new OSDPretty(OSDPretty::Mode_Popup);
osd->set_fading_enabled(true);
QFont font("Tahoma",11);
osd->setOsdFont(font);
osd->set_popup_duration(20000);
osd->SetMessage(name,text,QImage());
osd->show();


четверг, 31 марта 2011 г.

[Разное] о размере заметок

Почему заметки такие короткие?

Потому что времени на написание развернутых тем нет абсолютно из-за работы, подработки, семьи и еще тысячи и одной причины... :)

Цель каждой заметки - быть полезной и ненавязчивой.

среда, 30 марта 2011 г.

[Qt] Поиск и замена текста в Microsoft Word посредством ActiveQt

Обратил внимание на то, что в интернете на форумах достаточно сложно найти информацию о том, как производить поиск и замену текста в Microsoft Word посредством ActiveQt. Для собственного проекта написал следующую процедуру:

void MsWordDocument::replaceString(const QString& oldString, const QString& newString)
{
  QAxObject* WordSelection = WordApplication->querySubObject("Selection");

  QAxObject* Find = WordSelection->querySubObject("Find");
  if (!Find) return;
  Find->dynamicCall("ClearFormatting()");

  QList<QVariant> params;
  params.operator << (QVariant(oldString));
  params.operator << (QVariant("0"));
  params.operator << (QVariant("0"));
  params.operator << (QVariant("0"));
  params.operator << (QVariant("0"));
  params.operator << (QVariant("0"));
  params.operator << (QVariant(true));
  params.operator << (QVariant("0"));
  params.operator << (QVariant("0"));
  params.operator << (QVariant(newString));
  params.operator << (QVariant("2"));
  params.operator << (QVariant("0"));
  params.operator << (QVariant("0"));
  params.operator << (QVariant("0"));
  params.operator << (QVariant("0"));
  Find->dynamicCall("Execute(const QVariant&,const QVariant&,"
                    "const QVariant&,const QVariant&,"
                    "const QVariant&,const QVariant&,"
                    "const QVariant&,const QVariant&,"
                    "const QVariant&,const QVariant&,"
                    "const QVariant&,const QVariant&,"
                    "const QVariant&,const QVariant&,const QVariant&)",
                    params);
 
}
Более подробную информацию о передаваемых параметрах можно прочитать на MSDN 

воскресенье, 27 марта 2011 г.

[Qt] Изменение шрифта во всем документе Microsoft Word посредством ActiveQt

Сегодня хотел бы написать небольшую заметку о том, как изменить шрифт во всем документе, созданном в Microsoft Word. Не буду многословен, а просто доработаю предыдущий пример:


  1.  QAxObject* WordApplication = new QAxObject("Word.Application");
  2.  if (!WordApplication) return;
  3.  WordApplication->dynamicCall("SetVisible(bool)", false);
  4.  WordApplication->querySubObject("Documents")->querySubObject("Open(QVariant)", _filename);
  5.  
  6.  QAxObject* active_doc = WordApplication->querySubObject("ActiveDocument");
  7.  QAxObject* WordSelection = WordApplication->querySubObject("Selection");
  8.  WordSelection->dynamicCall("WholeStory()");
  9.  QAxObject *Font = WordSelection->querySubObject("Font");
  10.  Font->setProperty("Size", 22);
  11.  QVariant newF(_outputDir + newFilename);
  12.  QVariant fileFormat(6); //Saving as filtered rtf
  13.  active_doc->querySubObject("SaveAs(const QVariant&, const QVariant&)", newF, fileFormat);
  14.  
  15.  WordApplication->querySubObject("ActiveDocument")->dynamicCall("Close()");
  16.  WordApplication->dynamicCall("Quit()");
* This source code was highlighted with Source Code Highlighter.

четверг, 24 марта 2011 г.

[Qt] Вывод текстовых сообщений посредством libnotify OSD в ubuntu

При написании своей небольшой программки LinForismatic, которая отображает произвольные цитаты через заданные промежутки времени, захотелось отображать текст посредством стандартного OSD вывода под Linux, конкретно в ubuntu.

Проблема решилась достаточно просто:
1. устанавливаем libnotify-bin
2. используем notify-send для вывода сообщения

QString program = "notify-send";
QStringList arguments;
arguments << name << text;
QProcess* myProcess = new QProcess(this);
myProcess->start(program, arguments);

Имейте ввиду, что по некоторым причинам параметр командной строки для notify-send "--expire-time=" не работает.

среда, 23 марта 2011 г.

[Ubuntu] Запуск проигрывателя VLC в упрощенном режиме

Для того чтобы открыть мультимедиа файл в проигрывателе VLC c упрощенным режимом интерфейса, запустим vlc со следующими параметрами командной строки:


vlc --qt-minimal-view

 Для удобства рекомендую в настройках включить опцию "Поверх всех окон"

вторник, 22 марта 2011 г.

[Qt] плавное появление и "затухание" элементов. Анимация

Есть в Qt замечательный класс QPropertyAnimation, с помощью которого можно анимировать элементы интерфейса по их значениям. Например, прозрачность:
  1. // "затухание"
  2. QPropertyAnimation* animation = new QPropertyAnimation(this, "windowOpacity");
  3. animation->setDuration(2000);
  4. animation->setStartValue(1);
  5. animation->setEndValue(0);
  6. animation->start();
  7. connect(animation, SIGNAL(finished()), this, SLOT(hide()));
  8. // "появление"
  9. setWindowOpacity(0);
  10. show();
  11. QPropertyAnimation* animation = new QPropertyAnimation(this, "windowOpacity");
  12. animation->setDuration(2000);
  13. animation->setStartValue(0);
  14. animation->setEndValue(1);
  15. animation->start();

[Qt] конвертация файлов из Microsoft Word (doc) в RTF

Сказано - сделано:
QAxObject* WordApplication = new QAxObject("Word.Application");
  WordApplication->dynamicCall("SetVisible(bool)", false);
  WordApplication->querySubObject("Documents")->querySubObject("Open(QVariant)", _filename);


  QString newFilename = ...new...name...

  QAxObject* active_doc = WordApplication->querySubObject("ActiveDocument");
  QVariant newF(_outputDir + newFilename);
  QVariant fileFormat(6); //Сохраняем в rtf. 2 - txt
  active_doc->querySubObject("SaveAs(const QVariant&, const QVariant&)", newF, fileFormat);

  // Закрываем
  WordApplication->querySubObject("ActiveDocument")->dynamicCall("Close()");
  WordApplication->dynamicCall("Quit()");

Открываем doc файл, сохраняем его в rtf. При этом окно Ms Word скрываем

[Qt] использование кавычек в имени файла

Возникла необходимость в программе для windows в имени сохраняемого файла использовать кавычки. Придумал следующее решение:
  1. int start = _str.indexOf("\"");
  2. int end = _str.lastIndexOf("\"");
  3. _str.replace(start, 1, QString::fromUtf8("«"));
  4. _str.replace(end, 1, QString::fromUtf8("»"));

Под linux лишних телодвижений не нужно, естественно...

понедельник, 24 января 2011 г.

Насущное. Подведены итоги

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

потихонечку буду писать сюда о новом.