Обо мне

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

четверг, 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 лишних телодвижений не нужно, естественно...