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

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

Жанры

Основы программирования в 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@email.com\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);

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

Вернуть невесту. Ловушка для попаданки

Ардова Алиса
1. Вернуть невесту
Любовные романы:
любовно-фантастические романы
8.49
рейтинг книги
Вернуть невесту. Ловушка для попаданки

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

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

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

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

Наследие Маозари 6

Панежин Евгений
6. Наследие Маозари
Фантастика:
попаданцы
постапокалипсис
рпг
фэнтези
эпическая фантастика
5.00
рейтинг книги
Наследие Маозари 6

Изгои

Владимиров Денис
5. Глэрд
Фантастика:
фэнтези
боевая фантастика
5.00
рейтинг книги
Изгои

Мечников. Избранник бога

Алмазов Игорь
5. Жизнь Лекаря с нуля
Фантастика:
альтернативная история
аниме
фэнтези
5.00
рейтинг книги
Мечников. Избранник бога

Отщепенец

Ермоленков Алексей
1. Отщепенец
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Отщепенец

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

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

Цикл "Идеальный мир для Лекаря". Компиляция. Книги 1-30

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

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

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

Инкарнатор

Прокофьев Роман Юрьевич
1. Стеллар
Фантастика:
боевая фантастика
рпг
7.30
рейтинг книги
Инкарнатор

Охотник

Щепетнов Евгений Владимирович
Фантастика:
фэнтези
боевая фантастика
5.40
рейтинг книги
Охотник

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

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

Позывной "Князь" 4

Котляров Лев
4. Князь Эгерман
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Позывной Князь 4