Основы программирования в Linux
Шрифт:
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);
}
На
AddCdDialog
. Рис. 17.14
LogonDialog
Вы, конечно же, не сможете запрашивать базу данных без предварительной регистрации, поэтому вам необходимо простое диалоговое окно для ввода имени пользователя и пароля. Назовите этот класс
LogonDialog
. (Да, еще один пример остроумного и образного имени!) 1. Начнем с заголовочного файла. Введите приведенный далее программный код и назовите файл LogonDialog.h. Обратите внимание на то, что для разнообразия этот класс описан в данном случае как потомок класса
QDialog
, а не KDialogBase
.
#include <qdialog.h>
#include <qlineedit.h>
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 <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
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);
Поделиться:
Популярные книги
Студиозус 2
4. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
5.00
рейтинг книги
Академия проклятий. Книги 1 - 7
Академия Проклятий
Фантастика:
фэнтези
8.98
рейтинг книги
Афганский рубеж 2
2. Рубеж
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Отверженный. Дилогия
Отверженный
Фантастика:
фэнтези
7.51
рейтинг книги
Моя (не) на одну ночь. Бесконтрактная любовь
4. Шикарные Аверины
Любовные романы:
современные любовные романы
7.70
рейтинг книги
Деспот
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Херсон Византийский
1. Вечный капитан
Приключения:
морские приключения
7.74
рейтинг книги
Идеальный мир для Лекаря
1. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Барон играет по своим правилам
5. Закон сильного
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Хозяйка старой усадьбы
Любовные романы:
любовно-фантастические романы
8.07
рейтинг книги
Санек
1. Санек
Фантастика:
попаданцы
альтернативная история
4.00
рейтинг книги
Тринадцатый III
3. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Жена со скидкой, или Случайный брак
Любовные романы:
любовно-фантастические романы
8.15
рейтинг книги
Жена на четверых
Любовные романы:
любовно-фантастические романы
эро литература
5.60