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

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

Жанры

Основы программирования в 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.00
рейтинг книги
Всем стоять на Занзибаре (сборник)

Воин

Бубела Олег Николаевич
2. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.25
рейтинг книги
Воин

Вторая жизнь майора. Цикл

Сухинин Владимир Александрович
Вторая жизнь майора
Фантастика:
героическая фантастика
боевая фантастика
попаданцы
5.00
рейтинг книги
Вторая жизнь майора. Цикл

Инноваторы. Как несколько гениев, хакеров и гиков совершили цифровую революцию

Айзексон Уолтер
Документальная литература:
биографии и мемуары
публицистика
5.00
рейтинг книги
Инноваторы. Как несколько гениев, хакеров и гиков совершили цифровую революцию

Вечный. Книга IV

Рокотов Алексей
4. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
6.25
рейтинг книги
Вечный. Книга IV

Загадки истории. Факты. Открытия. Люди

Ермановская Анна Эдуардовна
Научно-образовательная:
история
7.00
рейтинг книги
Загадки истории. Факты. Открытия. Люди

Чудесный переплет. Часть 1

Малиновская Оксана Васильевна
Фантастика:
юмористическая фантастика
5.00
рейтинг книги
Чудесный переплет. Часть 1

Эмиссар

Листратов Валерий
8. Ушедший Род
Фантастика:
боевая фантастика
аниме
попаданцы
7.50
рейтинг книги
Эмиссар

Те, кто внизу. Донья Барбара. Сеньор Президент

Астуриас Мигель Анхель
133. Библиотека всемирной литературы
Проза:
классическая проза
5.50
рейтинг книги
Те, кто внизу. Донья Барбара. Сеньор Президент

Моя жена меня слишком балует

Фэньцзя Юэбань Яо
Веб-новеллы и ранобэ
Фантастика:
ранобэ
5.00
рейтинг книги
Моя жена меня слишком балует

Географ глобус пропил. Золото бунта

Иванов Алексей Викторович
Проза:
современная проза
7.86
рейтинг книги
Географ глобус пропил. Золото бунта

Аристократ из прошлого тысячелетия

Еслер Андрей
3. Соприкосновение миров
Фантастика:
фэнтези
попаданцы
аниме
5.25
рейтинг книги
Аристократ из прошлого тысячелетия

Избранные фэнтезийные циклы романов. Компиляция. Книги 1-20

Фирсанова Юлия Алексеевна
Избранные фэнтезийные циклы романов
Фантастика:
фэнтези
юмористическая фантастика
сказочная фантастика
5.00
рейтинг книги
Избранные фэнтезийные циклы романов. Компиляция. Книги 1-20

Шайтан Иван 5

Тен Эдуард
5. Шайтан Иван
Фантастика:
попаданцы
альтернативная история
историческое фэнтези
5.50
рейтинг книги
Шайтан Иван 5