Основы программирования в Linux - Мэтью Нейл Страница 318
- Категория: Компьютеры и Интернет / Интернет
- Автор: Мэтью Нейл
- Страниц: 324
- Добавлено: 2020-09-22 15:22:12
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних просмотр данного контента СТРОГО ЗАПРЕЩЕН! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту pbn.book@yandex.ru для удаления материала
Основы программирования в Linux - Мэтью Нейл краткое содержание
Прочтите описание перед тем, как прочитать онлайн книгу «Основы программирования в Linux - Мэтью Нейл» бесплатно полную версию:В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стандартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов
Основы программирования в Linux - Мэтью Нейл читать онлайн бесплатно
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 <qpushbutton.h>
#include <qlayout.h>
#include <qlabel.h>
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 показано, как будет выглядеть диалоговое окно.

Рис. 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 <kde/kapp.h>
#include <qmessagebox.h>
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) {
return 0;
}
}
}
delete dialog;
MainWindow *window = new MainWindow("Cd App");
window->resize(600, 400);
a.setMainWidget(window);
window->show();
return a.exec();
}
2. Осталось только написать pro-файл для утилиты qmake. Назовите его cdapp.pro:
TARGET = app
MOC_DIR = moc
OBJECTS_DIR = obj
INCLUDEPATH = /usr/include/kde /usr/include/mysql
QMAKE_LIBDIR_X11 += -/usr/lib
QMAKE_LIBDIR_X11 += /usr/lib/mysql
QMAKE_LIBS_X11 += -lkdeui -lkdecore -lmysqlclient
SOURCES = MainWindow.cpp main.cpp app_mysql.cpp AddCdDialog.cpp LogonDialog.cpp
HEADERS = MainWindow.h app_mysql.h AddCdDialog.h LogonDialog.h
Жалоба
Напишите нам, и мы в срочном порядке примем меры.