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

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

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

Шрифт:

-
+

Интервал:

-
+

Закладка:

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

  res1, search_text);

 statusBar()-&gt;message(statusBar_text);

 i = 0;

 list-&gt;clear();

8. Для каждого id извлеките сведения о компакт-диске в виджет QListView и информацию обо всех дорожках данного CD:

 while (i &lt; res1) {

  res2 = get_cd(cd_res-&gt;cd_id[i], cd);

  cd_item = new QListViewItem(list, cd-&gt;title, cd-&gt;artist_name,

   cd-&gt;catalogue);

  res3 = get_cd_tracks(cd_res-&gt;cd_id[i++], &amp;ct);

  j = 0;

  /* Заполните дерево дорожками текущего компакт-диска */

  while (j &lt; res3) {

   sprintf(track_title, &quot; Track %d. &quot;, 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-&gt;show();

}

Результат показан на рис. 17.13.

AddCdDialog

Для вставки сведений о компакт-диске в базу данных вам нужно включить в программу диалоговое окно с полями, необходимыми для ввода информации.

1. Введите следующий программный код в файл AddCdDialog.h. Имейте в виду, что класс AddCdDialog — потомок KDialogBase, виджета диалогового окна в среде KDE.

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

#include &lt;qlineedit.h&gt;

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

#include &quot;app_mysql.h&quot;

#include &lt;qlayout.h&gt;

#include &lt;qlabel.h&gt;

AddCdDialog::AddCdDialog(QWidget* parent)

 : KDialogBase(parent, &quot;AddCD&quot;, false, &quot;Add CD&quot;,

 KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok, true) {

 QWidget *widget = new QWidget(this);

 setMainWidget(widget);

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

 grid-&gt;addWidget(new QLabel(&quot;Artist&quot;, widget, &quot;artistlabel&quot;), 0, 0, 0);

 grid-&gt;addWidget(new QLabel(&quot;Title&quot;, widget, &quot;titlelabel&quot;), 1, 0, 0);

 grid-&gt;addwidget(new QLabel(&quot;Catalogue&quot;, widget, &quot;cataloguelabel&quot;), 2, 0, 0);

 artist_entry = new QLineEdit(widget, &quot;artist_entry&quot;);

 title_entry = new QLineEdit(widget, &quot;titleentry&quot;);

 catalogue_entry = new QLineEdit(widget, &quot;catalogue_entry&quot;);

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

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

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

 strcpy(title, title_entry-&gt;text());

 strcpy(catalogue, catalogue_entry-&gt;text());

 add_cd(artist, title, catalogue, &amp;cd_id);

}

На рис. 17.14 показано работающее диалоговое окно AddCdDialog.

Рис. 17.14 

LogonDialog

Вы, конечно же, не сможете запрашивать базу данных без предварительной регистрации, поэтому вам необходимо простое диалоговое окно для ввода имени пользователя и пароля. Назовите этот класс LogonDialog. (Да, еще один пример остроумного и образного имени!)

1. Начнем с заголовочного файла. Введите приведенный далее программный код и назовите файл LogonDialog.h. Обратите внимание на то, что для разнообразия этот класс описан в данном случае как потомок класса QDialog, а не KDialogBase.

#include &lt;qdialog.h&gt;

#include &lt;qlineedit.h&gt;

class LogonDialog : public QDialog {

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