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

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

Жанры

Основы программирования в 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");

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

Вечный Данж. Трилогия

Матисов Павел
Фантастика:
фэнтези
юмористическая фантастика
6.77
рейтинг книги
Вечный Данж. Трилогия

Небесные просторы

Брин Дэвид
3. Буря Возвышения
Фантастика:
космическая фантастика
6.25
рейтинг книги
Небесные просторы

Князь Андер Арес 3

Грехов Тимофей
3. Андер Арес
Фантастика:
рпг
аниме
фэнтези
5.00
рейтинг книги
Князь Андер Арес 3

Цари. Романовы. История династии

Радзинский Эдвард Станиславович
Документальная литература:
биографии и мемуары
6.09
рейтинг книги
Цари. Романовы. История династии

Игра с огнем

Джейн Анна
2. Мой идеальный смерч
Любовные романы:
современные любовные романы
9.51
рейтинг книги
Игра с огнем

Цикл "Отмороженный". Компиляция. Книги 1-14

Гарцевич Евгений Александрович
Отмороженный
Фантастика:
боевая фантастика
рпг
постапокалипсис
5.00
рейтинг книги
Цикл Отмороженный. Компиляция. Книги 1-14

Библия. Синодальный перевод

Священное Писание
Религия и эзотерика:
религия
5.00
рейтинг книги
Библия. Синодальный перевод

Свет и Тьма

Щепетнов Евгений Владимирович
3. Нед
Фантастика:
фэнтези
9.16
рейтинг книги
Свет и Тьма

Герои 1812 года

Дуров Валерий Александрович
680. Жизнь замечательных людей
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Герои 1812 года

Имаджика

Баркер Клайв
7. Книга-загадка, книга-мистика
Фантастика:
фэнтези
7.56
рейтинг книги
Имаджика

Последний реанорец. Том I и Том II

Павлов Вел
1. Высшая Речь
Фантастика:
фэнтези
7.80
рейтинг книги
Последний реанорец. Том I и Том II

Воронцов. Перезагрузка

Тарасов Ник
1. Воронцов. Перезагрузка
Фантастика:
попаданцы
альтернативная история
фантастика: прочее
5.40
рейтинг книги
Воронцов. Перезагрузка

Образ врага

Дашкова Полина Викторовна
Детективы:
триллеры
прочие детективы
8.32
рейтинг книги
Образ врага

История человечества. Восток

Панкова Мария Александровна
История человечества
Научно-образовательная:
история
5.00
рейтинг книги
История человечества. Восток