Книга: Основы программирования в Linux
LogonDialog
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 показано, как будет выглядеть диалоговое окно.
Рис. 17.15