β‘ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° About (Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅).
MainWindow
ΠΠ°ΡΠ½Π΅ΠΌ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π΄Π»Ρ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΠΈΠ΄ΠΆΠ΅Ρ ΠΏΠΎΠ»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΈ ΡΠΏΠΈΡΠΎΠΊ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΏΠΎΠΈΡΠΊΠ°.
1. ΠΠ°ΡΠ½ΠΈΡΠ΅ Ρ Π²Π²ΠΎΠ΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² ΡΠ°ΠΉΠ» MainWindow.h (ΠΈΠ»ΠΈ Π·Π°Π³ΡΡΠ·ΠΈΡΠ΅ Π΅Π³ΠΎ Ρ Web-ΡΠ°ΠΉΡΠ° ΠΊΠ½ΠΈΠ³ΠΈ). ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠΊΠ½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΠΈΠ΄ΠΆΠ΅Ρ QLineEdit Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠΎΠ² ΠΈ Π²ΠΈΠ΄ΠΆΠ΅Ρ QListView Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΏΠΎΠΈΡΠΊΠ°, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΡΠ°Π²ΠΈΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ qlistview.h ΠΈ qlineedit.h:
#include <kde/kmainwindow.h>
#include <qlistview.h>
#include <qlineedit.h>
class MainWindow : public KMainWindow {
Q_OBJECT
public:
MainWindow(const char *name);
public slots:
void doSearch();
void Added();
private:
QListView *list;
QLineEdit *search_entry;
};
2. MainWindow.ΡΡΡ β ΡΠ°ΠΌΠ°Ρ ΡΠ»ΠΎΠΆΠ½Π°Ρ ΡΠ°ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΈ ΡΠ²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠΈΠ³Π½Π°Π»Ρ Ρ Π²Π°ΡΠΈΠΌΠΈ ΡΠ»ΠΎΡΠ°ΠΌΠΈ. ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, Π½Π°ΡΠ½ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΡΠ°ΠΉΠ»ΠΎΠ² Π² Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°Ρ #include:
#include "MainWindow.h"
#include "AddCdDialog.h"
#include "app_mysql.h"
#include <qvbox.h>
#include <qlineedit.h>
#include <qpushbutton.h>
#include <qlabel.h>
#include <qlistview.h>
#include <kde/kapp.h>
#include <kde/kmenubar.h>
#include <kde/klocale.h>
#include <kde/kpopupmenu.h>
#include <kde/kstatusbar.h>
#include <kde/kaction.h>
#include <kde/kstdaccel.h>
#include <string.h>
MainWindow::MainWindow(const char * name) : KMainWindow(0L, name) {
setCaption("CD Database");
3. Π’Π΅ΠΏΠ΅ΡΡ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ΅Π½Ρ ΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° KAction.
KAction *addcd_action = new KAction("&Add CD", "filenew",
KStdAccel::shortcut(KStdAccel::New), this, SLOT(AddCd()), this);
KAction *quit_action = KStdAction::quit(KApplication::kApplication(),
SLOT(quit()), actionCollection());
QPopupMenu* filemenu = new QPopupMenu;
QString about = ("CD App\n\n"
"(C) 2007 Wrox Press\n" " [email protected]\n");
QPopupMenu* helpmenu = helpMenu(about);
menuBar()->insertItem("&File", filemenu);
menuBar()->insertltem(i18n("&Help"), helpmenu);
addcd_action->plug(filemenu);
filemenu->insertSeparator();
quit_action->plug(filemenu);
addcd_action->plug(toolBar());
quit_action->plug(toolBar());
4. ΠΠ»Ρ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ QBoxLayout Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² QLayout:
QVBox *vbox = new QVBox(this);
QHBox *hbox = new QHBox(vbox);
QLabel* label = new QLabel(hbox);
label->setText("Search Text: ");
search_entry = new QLineEdit(hbox);
QPushButton *button = new QPushButton("Search", hbox);
5. ΠΠ°Π»Π΅Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΠΈΠ΄ΠΆΠ΅Ρ QListView, Π·Π°Π½ΠΈΠΌΠ°ΡΡΠΈΠΉ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ°ΡΡΡ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΎΠΊΠ½Π°. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ° Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ Π²Ρ ΡΠ²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠΈΠ³Π½Π°Π»Ρ Ρ Π²Π°ΡΠΈΠΌ ΡΠ»ΠΎΡΠΎΠΌ doSearch. Π‘ΡΡΠΎΠΊΠ° ΡΠΎΡΡΠΎΡΠ½ΠΈΡ KMainWindow ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ Π·Π° ΡΡΠ΅Ρ Π²ΡΡΠ°Π²ΠΊΠΈ ΠΏΡΡΡΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ:
list = new QListView(vbox, "name", 0L);
list->setRootIsDecorated(TRUE);
list->addColumn("Title");
list->addColumn("Artist");
list->addColumn("Catalogue");
connect(button, SIGNAL(clicked()), this, SLOT(doSearch()));
connect(search_entry, SIGNAL(returnPressed()), this, SLOT(doSearch()));
statusBar()->message("");
setCentralWidget(vbox);
resize(300, 400);
}
6. Π‘Π»ΠΎΡ doSearch β ΡΠ°Π±ΠΎΡΠ΅Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π Π½Π΅ΠΌ ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΡΡΠΎΠΊΠ° ΠΏΠΎΠΈΡΠΊΠ° ΠΈ Π²ΡΠ±ΠΈΡΠ°ΡΡΡΡ Π²ΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π΅ΠΉ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠΈ ΠΈ ΠΈΡ Π΄ΠΎΡΠΎΠΆΠΊΠΈ. ΠΠΎΠ³ΠΈΠΊΠ° ΡΠ»ΠΎΡΠ° ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅, ΠΊΠ°ΠΊ Π² ΡΡΠ½ΠΊΡΠΈΠΈ doSearch GNOME/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);
}
}
}
Π ΠΈΡ. 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 <kde/kdialogbase.h>
#include <qlineedit.h>
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 <qlayout.h>
#include <qlabel.h>
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.
Π ΠΈΡ. 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");