Нейл Мэтью - Основы программирования в 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 - читать книгу онлайн бесплатно, автор Нейл Мэтью
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

statusBar()->message("");

setCentralWidget(vbox);

resize(300, 400);

}

6. Слот doSearch— рабочее завершение приложения. В нем считывается строка поиска и выбираются все соответствующие ей компакт-диски и их дорожки. Логика слота такая же, как в функции doSearchGNOME/GTK+ в главе 16.

void MainWindow::doSearch() {

cd_search_st *cd_res = new cd_search_st;

current_cd_st *cd = new current_cd_st;

struct current_tracks_st ct;

int res1, i, j, res2, res3;

char track_title[110];

char search_text[100];

char statusBar_text[200];

QListViewItem *cd_item;

strcpy(search_text, search_entry->text());

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

res1 = find_cds(search_text, cd_res);

sprintf(statusBar_text,

" Displaying %d result(s) for search string ' %s'",

res1, search_text);

statusBar()->message(statusBar_text);

i = 0;

list->clear();

8. Для каждого idизвлеките сведения о компакт-диске в виджет QListViewи информацию обо всех дорожках данного CD:

while (i < res1) {

res2 = get_cd(cd_res->cd_id[i], cd);

cd_item = new QListViewItem(list, cd->title, cd->artist_name,

cd->catalogue);

res3 = get_cd_tracks(cd_res->cd_id[i++], &ct);

j = 0;

/* Заполните дерево дорожками текущего компакт-диска */

while (j < res3) {

sprintf(track_title, " Track %d. ", j+1);

strcat(track_title, ct.track[j++]);

new QListViewItem(cd_item, track_title);

}

}

}

Рис 1713 9 Слот AddCdвызывается когда активизирован пункт меню или кнопка - фото 77

Рис. 17.13

9. Слот AddCdвызывается, когда активизирован пункт меню или кнопка панели инструментов addcd_action:

void MainWindow::AddCd()

AddCdDialog* dialog = new AddCdDialog(this);

dialog->show();

}

Результат показан на рис. 17.13.

AddCdDialog

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

1. Введите следующий программный код в файл AddCdDialog.h. Имейте в виду, что класс AddCdDialog— потомок KDialogBase, виджета диалогового окна в среде KDE.

#include

#include

class AddCdDialog : public KDialogBase {

Q_OBJECT

public:

AddCdDialog(QWidget* parent);

private:

QLineEdit* artist_entry, *title_entry, *catalogue_entry;

public slots:

void okClicked();

};

2. Далее следует файл AddCdDialog.cpp, в котором в слоте okClickedвызывается функция add_cdиз интерфейса MySQL:

#include "AddCdDialog.h"

#include "app_mysql.h"

#include

#include

AddCdDialog::AddCdDialog(QWidget* parent)

: KDialogBase(parent, "AddCD", false, "Add CD",

KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok, true) {

QWidget *widget = new QWidget(this);

setMainWidget(widget);

QGridLayout *grid = new QGridLayout(widget, 3, 2, 10, 5, "grid");

grid->addWidget(new QLabel("Artist", widget, "artistlabel"), 0, 0, 0);

grid->addWidget(new QLabel("Title", widget, "titlelabel"), 1, 0, 0);

grid->addwidget(new QLabel("Catalogue", widget, "cataloguelabel"), 2, 0, 0);

artist_entry = new QLineEdit(widget, "artist_entry");

title_entry = new QLineEdit(widget, "titleentry");

catalogue_entry = new QLineEdit(widget, "catalogue_entry");

grid->addWidget(artist_entry, 0, 1, 0);

grid->addWidget(title_entry, 1, 1, 0);

grid->addWidget(catalogue_entry, 2, 1, 0);

connect(this, SIGNAL(okClicked()), this, SLOT(okClicked()));

}

void AddCdDialog::okClicked() {

char artist[200];

char title[200];

char catalogue[200];

int cd_id = 0;

strcpy(artist, artist_entry->text());

strcpy(title, title_entry->text());

strcpy(catalogue, catalogue_entry->text());

add_cd(artist, title, catalogue, &cd_id);

}

На рис. 17.14 показано работающее диалоговое окно AddCdDialog.

Рис 1714 LogonDialog Вы конечно же не сможете запрашивать базу данных - фото 78

Рис. 17.14

LogonDialog

Вы, конечно же, не сможете запрашивать базу данных без предварительной регистрации, поэтому вам необходимо простое диалоговое окно для ввода имени пользователя и пароля. Назовите этот класс LogonDialog. (Да, еще один пример остроумного и образного имени!)

1. Начнем с заголовочного файла. Введите приведенный далее программный код и назовите файл LogonDialog.h. Обратите внимание на то, что для разнообразия этот класс описан в данном случае как потомок класса QDialog, а не KDialogBase.

#include

#include

class LogonDialog : public QDialog {

Q_OBJECT

public:

LogonDialog(QWidget* parent = 0, const char *name = 0);

QString getUsername();

QString getPassword();

private:

QLineEdit *username_entry, *password_entry;

};

2. У вас есть более удобные методы для имени пользователя и пароля, чем инкапсуляция в файле LogonDialog.cpp вызова database_start. Далее приведен файл LogonDialog.cpp:

#include "LogonDialog.h"

#include "appmysql.h"

#include

#include

#include

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

QDialog(parent, name) {

QGridLayout *grid = new QGridLayout(this, 3, 2, 10, 5, "grid");

grid->addWidget(new QLabel("Username", this, "usernamelabel"), 0, 0, 0);

grid->addWidget(new QLabel("Password", this, "passwordlabel"), 1, 0, 0);

username_entry = new QLineEdit(this, "username entry");

password_entry = new QLineEdit(this, "password_entry");

password_entry->setEchoMode(QLineEdit::Password);

grid->addWidget(username_entry, 0, 1, 0);

grid->addWidget(passwordentry, 1, 1, 0);

QPushButton* button = new QPushButton("Ok", this, "button");

grid->addWidget(button, 2, 1, Qt::AlignRight);

connect (button, SIGNAL(clicked()), this, SLOT(accept()));

}

QString LogonDialog::getUsername() {

if (username_entry == NULL) return NULL;

return username_entry->text();

}

QString LogonDialog::getPassword() {

if (password_entry == NULL) return NULL;

return password_entry->text();

}

На рис. 17.15 показано, как будет выглядеть диалоговое окно.

Рис 1715 maincpp Единственный оставшийся программный код функция main - фото 79

Рис. 17.15

main.cpp

Единственный оставшийся программный код — функция main, которую вы помещаете в отдельный файл main.cpp.

1. В файле main.cpp вы открываете окно LogonDialogи получаете успешную регистрацию из функции database_start. Если регистрация оказалась неудачной, вы выводите окно QMessageBoxили при попытке закрыть LogonDialogпросите у пользователя подтверждения его выхода.

#include "MainWindow.h"

#include "app_mysql.h"

#include "LogonDialog.h"

#include

#include

int main(int argc, char **argv) {

char username[100];

char password[100];

KApplication a(argc, argv, "cdapp");

LogonDialog *dialog = new LogonDialog();

while (1) {

if (dialog->exec() == QDialog::Accepted) {

strcpy(username, dialog->getUsername());

strcpy(password, dialog->getPassword());

if (database_start(username, password)) break;

QMessageBox::information(0, "Title",

"Could not Logon: Check username and/or password",

QMessageBox::Ok);

continue;

} else {

if (QMessageBox:information(0, "Title",

"Are you sure you want to quit?", QMessageBox::Yes,

QMessageBox::No) == QMessageBox::Yes) {

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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