четвер, 4 березня 2010 р.

MessageBox в Qt

Подготовка к работе

За работу с всплывающими сообщениями в Qt отвечает модуль QMessageBox, поэтому необходимо подключить его в исходнике:

#include<QMessageBox>

Простой Message Box без обработки вариантов ответа

Создание простого Message Box без обработки вариантов ответа (по сути это просто всплывающее окно, убирается по нажатию на центр джойстика).

#include<QtGui/QApplication>
#include<QMessageBox>
int main(int argc, char *argv[])
{
  QApplication app(argc, argv);
  QMessageBox msgBox;
  msgBox.setText("Hello Here");
  msgBox.exec();
  app.quit();
  return 1;
}

"Умный" Message Box с обработкой вариантов ответа

Для интереса добавим появление этого бокса по нажатию на кнопку: Создаем на форме кнопку, жмем на ней правой кнопкой мыши - Перейти к слоту. Выбираем clicked() и вставляем туда следующий код:

QMessageBox msgBox;
// Заголовок сообщения
msgBox.setText("Testing.."); 
// Тип иконки сообщения
msgBox.setIcon(QMessageBox::Information); 
// Основное сообщение Message Box
msgBox.setInformativeText("Just show infornation."); 
// Добавление реагирования на софт клавиши
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); 
// На какой кнопке фокусироваться по умолчанию
msgBox.setDefaultButton(QMessageBox::Ok); 

/* Запускаем QMessageBox. После выполнения, в ret будет лежать значение кнопки, на которую нажали - это необходимо для дальнейшей обработки событий*/
int ret = msgBox.exec(); 
// Собственно вот этот case и отвечает за обработку событий
switch (ret) {   
case QMessageBox::Save:
     // Сюда пишем обработку события Cancel
     break;
  case QMessageBox::Ok:
     // Сюда пишем обработку события Ok
     break;
  default:
     // Сюда пишем обработку события по умолчанию
     break;
}

Несколько "быстрых" вариантов создания MessageBox

QMessageBox::warning(0,"Warning", "Warning message text");
QMessageBox::information(0, "Information", "Information message text");
QMessageBox::critical(0, "Critical", "Critical message text");

Взято отсюда

понеділок, 1 березня 2010 р.

Надоело __history в Delphi?

Пишу проект на Delphi 2007. Через некоторое время заметил что папка с проектом начала ненормально раздуваться.

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

Покопавшись нашел 
Tools->Options->Editor Options->Create backup files

Снимаем галочку и радуемся.

вівторок, 16 лютого 2010 р.

GExperts: Отладка на другой машине

GExperts это отличный помощник разработчика в Delphi.
В нем есть отличная функция SendDebug, с помощью которой вы сможете выводить отладочную информацию в отдельное окно, которое имеет свою иконку в SystemTray. Для этого в коде не нужно придумывать никаких конструкций - GExperts все делает сам. Он добавляет в список модулей модуль DebugIntf а в код вставляет такую конструкцию
{IFOPTD+} SendDebug(''); {ENDIF}
Так что, когда отладили просто выключаем опцию D и просто перекомпилируйте и все.
Однако у меня возникла ситуация, когда у себя все отладил - вроде работает. Отдал заказчику, а у него что-то не работает. Если просто перекомпилировать программу с опцией D и отдать заказчику, то она не заработает, а будет выкидывать всевозможные ошибки.
Поэтому немного покопавшись решил эту проблему следующим способом.
Поместил папку к моей программе следующие файлы:

  1. C:\Program Files\GExperts for Delphi 2007\GExpertsDebugWindow.exe *

  2. C:\Windows\rtl100.bpl **

  3. C:\Windows\vcl100.bpl **

  4. C:\Windows\vclx100.bpl **
* Путь может отличатся если вы указали его вручную или у вас другая версия Delphi и соответственно GExperts.
** Номер в имени файла это версия Delphi. Так что если у вас не Delphi 2007, то у вас другой номер. Просто поищите в папке Windows файлы rtl*.bpl, vcl*.bpl и vclx*.bpl

Заархивировал папку и отправил клиенту.
Вот и всё

Вышла новая версия VirtualBox 3.1.4

VirtualBox
Вчерась или позавчерась мой VirtualBox сообщил о наличии новой версии 3.1.4. Это меня и удивило и обрадовало одновременно. Так как весть о том что Sun Microsystems был продан Oracl меня сильно опечалила и настроила на то, что некоторые опенсорсные проекты Сана перестанут нормально финансироваться или вообще закроются. Такое впечатление у меня сложилось после прочтения комментариев к этой новости на нескольких сайтах. Однако это оказалось не так плохо. Oracl нормально поддерживает открытые и свободные проекты - http://oss.oracle.com.

Выпуск новой версии VirtualBox обнадеживает.
Итак краткий список изменений:
* улучшена стабильность эмуляции SMP-систем
* исправлена несовместимость с ядром Linux версии 2.6.32
* исправлен сбой при использовании 16-битных приложений в Windows
* по умолчанию используется nested paging для новых VM
* множественные улучшения поддержки 3D
* исправлена поддержка образов VirtualPC
* исправлена работа с симлинками в shared folders
* исправлена ошибка с записью звука при использовании PulseAudio
* гостевой драйвер мыши теперь работает в Debian 5.0.3

Полный список смотрите тут
Скачивать от сюда

четвер, 11 лютого 2010 р.

About

Доброе время суток!

Эта статья о самом этом блоге и его целях.

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

Я не претендую на звание гуру. Сюда я буду писать проблемы с которыми я реально столкнулся и как я их решил. Если поправит, подскажет лучшее решение или еще один вариант буду премного благодарен

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