- •Содержание
- •Глава 1. Введение в информационно-аналитическую систему обратных задач химической кинетики1
- •1.1. Введение
- •1.2. Методологические основы изучения объектов химической кинетики
- •1.3. Структура информационно-аналитической системы обратных задач химической кинетики
- •Глава 2. Составление и анализ кинетических моделей химических реакций
- •2.1. Основные понятия и определения
- •2.2. Гомогенные и гетерогенные реакции
- •2.3. Замкнутые и открытые системы
- •2.4. Скорость химической реакции. Кинетическое уравнение химического процесса
- •2.5. Константа скорости химической реакции. Энергия активации
- •2.6. Схема сложного химического процесса
- •2.7. Система кинетических уравнений сложного химического процесса
- •2.8. Основные показатели эффективности проведения химических реакций
- •2.9. Кинетические модели химических реакций
- •2.10. Прямая и обратная задачи
- •Глава 3. Дифференциальные уравнения в задачах химической кинетики
- •3.1. Кинетика простых реакций.
- •3.2. Кинетика сложных реакций
- •3.2.1. Обратимые реакции
- •3.2.3 Последовательные реакции a→r→s. Аналитическое решение прямой кинетической задачи.
- •3.3. Численные методы решения кинетических уравнений.
- •3.3.1. Метод Эйлера
- •3.3.2.Метод Рунге-Кутты
- •Глава 4. Qt4. Создание пользовательского интерфейса.
- •4.1. Введение в Qt
- •4.2. Первое знакомство
- •4.3. Использование графики в приложениях
- •4.4. Создание диалоговых окон
- •Глава 5. Разработка иас озхк при моделировании детального механизма гидроалюминирования олефинов
- •5.1. Механизм гидроалюминирования олефинов
- •5.2. Математическое описание общей реакции гидроалюминирования олефинов алкилаланами
- •К входным информационным потокам относятся:
- •5.3. Кинетическая модель каталитической реакции гидроалюминирования олефинов алкилаланами в присутствии Сp2ZrCl2. Результаты вычислительного эксперимента
- •Выводы:
- •Информационно-аналитическая система обратных задач химической кинетики
Глава 4. Qt4. Создание пользовательского интерфейса.
4.1. Введение в Qt
Сегодня практически невозможно представить себе приложение, не обладающее интерфейсом пользователя (от примитивного до GUI _– Grathical User Interface). Библиотеки для создания пользовательского интерфейса применяются во всех современных операционных системах.
Хотя WinApi – интерфейс программирования приложений – обладает всем необходимым для создания графического интерфейса пользователя. Даже библиотека MFC, призванная облегчить процесс написания программ для ОС Windows, не дает той простоты и легкости в процессе создания программ, как хотелось бы. Но самый большой недостаток, связанный с применением этих библиотек – это платформозависимость.
Платформонезависимая реализация приложений – это будущее программной индустрии. С каждым днем она будет приобретать все более возрастающее значение. Выигрыш от реализации платформонезависимых приложений налицо: значительно сокращается время разработки, так как нет необходимости писать код несколько раз, и, что не менее важно, отпадает необходимость знать специфику каждой из платформ, для которой пишется программа. И, вместе с тем, заметно улучшится и качество приложений, так как оно будет тестироваться на нескольких платформах, а ошибки будут исправляться централизованным путем в одном и том же исходном коде программы.
Библиотека Qt представляет собой набор классов C++ и инструментов разработки программ для Windows, Linux, Mac OS X и встраиваемых систем (Embedded Linux). Исходные тексты библиотеки открыты, но лицензия GPL требует, чтобы программы, которые разрабатываются с использованием Qt, распространялись с открытым исходным кодом.
Qt прекрасно документирована, благодаря чему вы всегда можете почерпнуть любую интересующую вас информация об этой библиотеке, используя программу Qt Assisstant (а также примеры в папках /examples и /demos).
Добро пожаловать в мир Qt!
4.2. Первое знакомство
Давайте начнем с очень простой Qt-программы. Сначала мы разберем каждую строку этой программы, а затем скомпилируем и выполним её (здесь и далее мы будем работать в системе Linux; для изучения процесса установки Qt смотри [10]).
1 2 3 4 5 6 7 8 9 |
#include<QtGui/QApplication> #include<QtGui/QLabel> int main(int argc, char *argv[]) { QApplication app(argc,argv); QLabel *lb = new QLabel(QObject::tr("Привет, студент!")); lb->show(); return app.exec(); } |
В строках 1 и 2 в программу включаются определения классов QApplication и QLabel. Для каждого Qt-класса имеется заголовочный файл с тем же именем (с учетом регистра), содержащий определение этого класса.
В строке 5 создается объект QApplication для управления всеми ресурсами приложения. Для конструктора Qapplication необходимо указывать параметры argc и argv, поскольку Qt сама обрабатывает некоторые из аргументов командной строки.
В строке 6 создается текстовая метка QLabel, которая выводит на экран наше сообщение. Виджет (widget) – любой визуальный элемент графического интерфейса пользователя. Кнопки, меню, полосы прокрутки и фреймы являются примерами виджетов. Одни виджеты могут содержать в себе другие виджеты. И, кроме того, язык Qt настолько гибок, что любой виджет может быть окном. В данном примере QLabel является окном приложения.
Строка 7 делает текстовую метку видимой. Виджеты всегда создаются сначала невидимыми, и поэтому до непосредственного вывода на экран вы можете настроить их и тем самым не допустить мерцание экрана.
Строка 8 обеспечивает передачу управления приложением Qt. В этом месте программа переходит в цикл обработки событий, то есть в своего рода режим «простоя», ожидая со стороны пользователя таких действий, как щелчок мыши или нажатие клавиши на клавиатуре.
Мы не делаем вызов оператора delete для объекта QLabel в конце функции main(). Подобная утечка памяти в такой небольшой программе безвредна, поскольку после завершения программы эта память будет возвращена операционной системой.
Пусть наша программа имеет имя simple/simple.cpp. Находясь в консольном режиме, войдите в каталог simple и последовательно введите команды.
qmake -project //создание файла проекта, независимого от платформы qmake simple.pro //создание зависимого от платформы makefile make //команда построения программы ./simple //выполнение программы |
Не удивляйтесь, если вместо приветствия, у вас появилась некая абракадабра. Все это объясняется несоответствием кодировок. Для русификации нужно использовать функции интернационализации приложений Qt, а именно макросы tr() для написания всех строк и класс QTextCodec. Замените исходный код следующим (заодно несколько оживим текст):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include<QtGui/QApplication> #include<QtGui/QLabel> #include<QTextCodec> int main(int argc, char *argv[]) { QApplication app(argc,argv); QTextCodec *utfcodec = QTextCodec::codecForName("UTF-8"); QTextCodec::setCodecForTr(utfcodec); QLabel *lb = new QLabel(QObject::tr("<h2><u><font color=blue>Привет</font></u>, студент!</h2>")); lb->show(); return app.exec(); } |
И в результате работы программы увидим:
Ваша первая программа в Qt готова. Поздравляем!
