Чтение онлайн

на главную - закладки

Жанры

Основы программирования в Linux
Шрифт:

 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");

Поделиться:
Популярные книги

Новые горизонты

Лисина Александра
5. Гибрид
Фантастика:
попаданцы
технофэнтези
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Новые горизонты

Шатун. Лесной гамбит

Трофимов Ерофей
2. Шатун
Фантастика:
боевая фантастика
7.43
рейтинг книги
Шатун. Лесной гамбит

Кодекс Охотника. Книга XVI

Винокуров Юрий
16. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XVI

Запрети любить

Джейн Анна
1. Навсегда в моем сердце
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Запрети любить

Кодекс Крови. Книга ХII

Борзых М.
12. РОС: Кодекс Крови
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Кодекс Крови. Книга ХII

Правильный лекарь. Том 11

Измайлов Сергей
11. Неправильный лекарь
Фантастика:
городское фэнтези
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Правильный лекарь. Том 11

Законы Рода. Том 8

Андрей Мельник
8. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Законы Рода. Том 8

Дважды одаренный. Том V

Тарс Элиан
5. Дважды одаренный
Фантастика:
аниме
альтернативная история
городское фэнтези
5.00
рейтинг книги
Дважды одаренный. Том V

Правильный лекарь. Том 9

Измайлов Сергей
9. Неправильный лекарь
Фантастика:
городское фэнтези
аниме
попаданцы
5.00
рейтинг книги
Правильный лекарь. Том 9

Сирийский рубеж 2

Дорин Михаил
6. Рубеж
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Сирийский рубеж 2

Путь одиночки. Книга 1

Понарошку Евгений
1. Одиночка
Фантастика:
боевая фантастика
попаданцы
рпг
фэнтези
фантастика: прочее
5.00
рейтинг книги
Путь одиночки. Книга 1

Огненный наследник

Тарс Элиан
10. Десять Принцев Российской Империи
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Огненный наследник

Эволюция мага

Лисина Александра
2. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эволюция мага

Черный дембель. Часть 5

Федин Андрей Анатольевич
5. Черный дембель
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Черный дембель. Часть 5