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

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

Жанры

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

На рис. 17.11 и 17.12 показано, как появляются в окне меню и кнопки панели инструментов.

Рис. 17.11 

Рис. 17.12 

И вот оно! Мы закончили наш тур по Qt и KDE, рассмотрев базовые элементы,

всех приложений GUI, окна, схемы размещения, кнопки, диалоговые окна и меню. Существует бесчисленное множество виджетов Qt и KDE, о которых мы не упоминали, начиная с
QColorDialog
— диалогового окна для выбора цвета — и заканчивая
KHTML
— виджетом Web-обозревателя — все они подробно описаны на Web-сайтах компании Trolltech и графической среды KDE. 

Приложение для работы с базой данных компакт-дисков с использованием KDE/Qt

Теперь, когда вы можете использовать силу и мощь KDE/Qt, пришло время снова обратить внимание на приложение для работы с компакт-дисками, чтобы привести его в чувство.

Напоминаем, чего вы хотите добиться от вашего приложения для работы с базой данных компакт-дисков:

 регистрация в базе данных из графического пользовательского интерфейса;

 поиск компакт-диска в базе данных;

 вывод информации о компакт-диске и его дорожках;

 добавление компакт-диска в базу данных;

 отображение окна 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);

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

Адвокат Империи 3

Карелин Сергей Витальевич
3. Адвокат империи
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Адвокат Империи 3

Кротовский, может, хватит?

Парсиев Дмитрий
3. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
аниме
7.50
рейтинг книги
Кротовский, может, хватит?

Дурная жена неверного дракона

Ганова Алиса
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Дурная жена неверного дракона

Вонгозеро

Вагнер Яна
1. Вонгозеро
Детективы:
триллеры
9.19
рейтинг книги
Вонгозеро

Ведьма Вильхельма

Шёпот Светлана
Любовные романы:
любовно-фантастические романы
8.67
рейтинг книги
Ведьма Вильхельма

Папина дочка

Рам Янка
4. Самбисты
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Папина дочка

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

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

Как я строил магическую империю 7

Зубов Константин
7. Как я строил магическую империю
Фантастика:
попаданцы
постапокалипсис
аниме
фантастика: прочее
5.00
рейтинг книги
Как я строил магическую империю 7

Лучший из худший 3

Дашко Дмитрий
3. Лучший из худших
Фантастика:
городское фэнтези
попаданцы
аниме
6.00
рейтинг книги
Лучший из худший 3

Штурмовик из будущего 3

Политов Дмитрий Валерьевич
3. Небо в огне
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Штурмовик из будущего 3

Последний попаданец 2

Зубов Константин
2. Последний попаданец
Фантастика:
юмористическая фантастика
попаданцы
рпг
7.50
рейтинг книги
Последний попаданец 2

Идеальный мир для Лекаря 14

Сапфир Олег
14. Лекарь
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 14

Безумный Макс. Поручик Империи

Ланцов Михаил Алексеевич
1. Безумный Макс
Фантастика:
героическая фантастика
альтернативная история
7.64
рейтинг книги
Безумный Макс. Поручик Империи

Вдова на выданье

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Вдова на выданье