Жанры книг
Мы в соц.сетях
ParaKnig📚 » Компьютеры и Интернет » Интернет » Основы программирования в Linux - Мэтью Нейл
<< На главную

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

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

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 314 315 316 317 318 319 320 321 322 ... 324
Перейти на страницу:

 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 &quot;LogonDialog.h&quot;

#include &quot;appmysql.h&quot;

#include &lt;qpushbutton.h&gt;

#include &lt;qlayout.h&gt;

#include &lt;qlabel.h&gt;

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

 QDialog(parent, name) {

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

 grid-&gt;addWidget(new QLabel(&quot;Username&quot;, this, &quot;usernamelabel&quot;), 0, 0, 0);

 grid-&gt;addWidget(new QLabel(&quot;Password&quot;, this, &quot;passwordlabel&quot;), 1, 0, 0);

 username_entry = new QLineEdit(this, &quot;username entry&quot;);

 password_entry = new QLineEdit(this, &quot;password_entry&quot;);

 password_entry-&gt;setEchoMode(QLineEdit::Password);

 grid-&gt;addWidget(username_entry, 0, 1, 0);

 grid-&gt;addWidget(passwordentry, 1, 1, 0);

 QPushButton* button = new QPushButton(&quot;Ok&quot;, this, &quot;button&quot;);

 grid-&gt;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-&gt;text();

}

QString LogonDialog::getPassword() {

 if (password_entry == NULL) return NULL;

 return password_entry-&gt;text();

}

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

Рис. 17.15 

main.cpp

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

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

#include &quot;MainWindow.h&quot;

#include &quot;app_mysql.h&quot;

#include &quot;LogonDialog.h&quot;

#include &lt;kde/kapp.h&gt;

#include &lt;qmessagebox.h&gt;

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

 char username[100];

 char password[100];

 KApplication a(argc, argv, &quot;cdapp&quot;);

 LogonDialog *dialog = new LogonDialog();

 while (1) {

  if (dialog-&gt;exec() == QDialog::Accepted) {

   strcpy(username, dialog-&gt;getUsername());

   strcpy(password, dialog-&gt;getPassword());

   if (database_start(username, password)) break;

   QMessageBox::information(0, &quot;Title&quot;,

    &quot;Could not Logon: Check username and/or password&quot;,

    QMessageBox::Ok);

   continue;

  } else {

   if (QMessageBox:information(0, &quot;Title&quot;,

    &quot;Are you sure you want to quit?&quot;, QMessageBox::Yes,

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

    return 0;

   }

  }

 }

 delete dialog;

 MainWindow *window = new MainWindow(&quot;Cd App&quot;);

 window-&gt;resize(600, 400);

 a.setMainWidget(window);

 window-&gt;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

1 ... 314 315 316 317 318 319 320 321 322 ... 324
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Основы программирования в Linux - Мэтью Нейл бесплатно.
Комментарии
Открыть боковую панель
Комментарии
Лариса
Лариса 11.03.2026 - 20:17
Странно,здесь имя девочки Аграфена,а на других сайтах я прослушала три книги этого цикла с именем Дарвина.Зачем менять имя и путать читателей? Опечатка- не Дарвина,  а  Дарина.
Григорий
Григорий 09.04.2025 - 22:24
Лучшая книга всех времен
Женя
Женя 02.04.2025 - 16:08
Любимая книга