Нейл Мэтью - Основы программирования в Linux

Тут можно читать онлайн Нейл Мэтью - Основы программирования в Linux - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-osnet, издательство «БХВ-Петербург», год 2009. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Основы программирования в Linux
  • Автор:
  • Жанр:
  • Издательство:
    «БХВ-Петербург»
  • Год:
    2009
  • Город:
    Санкт-Петербург
  • ISBN:
    978-5-9775-0289-4
  • Рейтинг:
    4/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Нейл Мэтью - Основы программирования в Linux краткое содержание

Основы программирования в Linux - описание и краткое содержание, автор Нейл Мэтью, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым.

Для начинающих Linux-программистов

Основы программирования в Linux - читать онлайн бесплатно полную версию (весь текст целиком)

Основы программирования в Linux - читать книгу онлайн бесплатно, автор Нейл Мэтью
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

// Пользователь щелкнул мышью кнопку OK

doSomething();

} else {

// Пользователь щелкнул мышью кнопку Cancel или

// диалоговое окно уничтожено

doSomethingElse();

}

delete dialog;

Когда метод execвозвращает управление приложению, диалоговое окно автоматически скрывается, но вы все равно удаляете объект из памяти.

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

Немодальные диалоговые окна

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

Для отображения немодального диалогового окна вызывайте метод show, как вы сделали бы для окна QMainWindow:

MyDialog *dialog = new MyDialog(this, "mydialog");

dialog->show();

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

MyDialog::MyDialog(QWidget *parent, const char *name) :

QDialog(parent, name) {

...

connect(ok_pushbutton, SIGNAL(clicked()), this, SLOT(OkClicked()));

connect(cancel_pushbutton, SIGNAL(clicked()), this, SLOT(CancelClicked()));

}

MyDialog::OkClicked() {

// Выполните что-либо

}

MyDialog::CancelClicked() {

// Выполните что-либо другое

}

Как и в случае модального окна, диалоговое окно автоматически скрывается при нажатии кнопки.

Полумодальное диалоговое окно

Для создания полумодального диалогового окна вы должны задать флаг модального режима в конструкторе QDialogи применить метод show:

QDialog(QWidget *parent=0, const char *name=0, bool modal=FALSE, WFlags f=0);

Вы не задаете в модальном диалоговом окне флаг модального режима равным TRUE, потому что вызов execзаставляет диалоговое окно перейти в модальный режим независимо от значения этого флага.

Конструктор вашего диалогового окна будет выглядеть примерно следующим образом:

MySMDialog::MySMDialog(QWidget *parent, const char *name):

QDialog(parent, name, TRUE) {

...

}

После того как вы определили ваше диалоговое окно, вызовите функцию showкак обычно и затем продолжите свою обработку, периодически вызывая QApplication::processEventsдля обновления вашего диалогового окна:

MySMDialog *dialog = MySMDialog(this, "semimodal");

dialog->show();

while (processing) {

doSomeProcessing();

app->processEvents();

if (dialog->wasCancelled()) break;

}

Перед продолжением выполнения проверьте, не уничтожено ли диалоговое окно. Имейте в виду, что функция wasCancelledне является частью класса QDialog— вы должны написать ее самостоятельно.

Комплект Qt предоставляет готовые подклассы класса QDialog, предназначенные для конкретных задач, таких как выбор файлов, ввод текста, индикация процесса выполнения и вывод окна сообщения. Применение этих виджетов в любых приложениях убережет вас от множества неприятностей и проблем.

QMessageBox

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

У класса QMessageBoxесть статические методы создания и отображения окон всех трех перечисленных типов:

#include

int information(QWidget *parent, const QString& caption,

const QString&text, int button0, int button1=0, int button2=0);

int warning(QWidget *parent, const QString& caption,

const QString& text, int button0, int button1, int button2=0);

int critical(QWidget *parent, const QString& caption,

const QString& text, int button0, int button1, int button2=0);

Можно выбрать кнопки из списка готовых кнопок QMessageBox, соответствующих значениям, возвращаемым статическими методами:

QMessageBox::Ok;

QMessageBox::Cancel;

QMessageBox::Yes;

QMessageBox::No;

QMessageBox::Abort;

QMessageBox::Retry;

QMessageBox::Ignore.

Типичный пример использования окна QMessageBoxбудет похож на приведенный далее фрагмент программного кода:

int result = QMessageBox::information(this,

"Engine Room Query",

"Do you wish to engage the HyperDrive?",

QMessageBox::Yes | QMessageBox::Default,

QMessageBox::No | QMessageBox::Escape);

switch (result) {

case QMessageBox::Yes:

hyperdrive->engage();

break;

case QMessageBox::No:

// сделайте что-нибудь еще

break;

}

Вы соединили операцией OR( |) коды кнопок с вариантами Defaultи Escape, чтобы задать стандартные действия, при нажатии клавиш (или ) и . Результирующее диалоговое окно показано на рис. 17.8.

Рис 178 QInputDialog Окно QInputDialogполезно для ввода пользователем - фото 72

Рис. 17.8

QInputDialog

Окно QInputDialogполезно для ввода пользователем отдельных значений, будь то текст, вариант раскрывающегося списка, целочисленное или действительное значение. У класса QInputDialogесть статические методы, например QMessageBox, создающие некоторые проблемы, поскольку у них слишком много параметров, к счастью, у большинства из них есть значения по умолчанию:

#include

QString getText(const QString& caption, const QString& label,

QLineEdit::EchoMode mode=QLineEdit::Normal,

const QString& text=QString::null,

bool* ok = 0, QWidget* parent = 0, const char * name = 0);

QString getItem(const QString& caption, const QString& label,

const QStringList& list, int current=0, bool editable=TRUE,

bool* ok=0, QWidget* parent = 0, const char* name=0)

int getInteger(const QString& caption, const QString& label,

int num=0, int from = -2147483647, int to = 2147483647,

int step = 1, bool* ok = 0, QWidget* parent = 0, const char* name = 0);

double getDouble(const QString& caption, const QString& label,

double num = 0, double from = -2147483647, double to = 2147483647,

int decimals = 1, bool* ok = 0, QWidget* parent = 0, const char* name = 0);

Для ввода строки текста напишите следующий фрагмент кода:

bool result;

QString text = QInputDialog::getText("Question", "What is your Quest?:",

QLineEdit::Normal, QString::null, &result, this, "input");

if (result) {

doSomething(text);

} else {

// Пользователь нажал Cancel

}

Как видно из рис. 17.9, окно QInputDialogсоздано с помощью виджета QLi neEdit и кнопок OKи Cancel.

Рис 179 Диалоговое окно созданное методом QInputDialoggetText применяет - фото 73

Рис. 17.9

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Нейл Мэтью читать все книги автора по порядку

Нейл Мэтью - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Основы программирования в Linux отзывы


Отзывы читателей о книге Основы программирования в Linux, автор: Нейл Мэтью. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x