Жанры книг
Мы в соц.сетях
ParaKnig📚 » Компьютеры и Интернет » Интернет » Основы программирования в Linux - Мэтью Нейл
<< На главную

Основы программирования в Linux - Мэтью Нейл

Читать онлайн Основы программирования в Linux - Мэтью Нейл

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 312 313 314 315 316 317 318 319 320 ... 324
Перейти на страницу:

#include &lt;qlineedit.h&gt;

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 &quot;MainWindow.h&quot;

#include &quot;AddCdDialog.h&quot;

#include &quot;app_mysql.h&quot;

#include &lt;qvbox.h&gt;

#include &lt;qlineedit.h&gt;

#include &lt;qpushbutton.h&gt;

#include &lt;qlabel.h&gt;

#include &lt;qlistview.h&gt;

#include &lt;kde/kapp.h&gt;

#include &lt;kde/kmenubar.h&gt;

#include &lt;kde/klocale.h&gt;

#include &lt;kde/kpopupmenu.h&gt;

#include &lt;kde/kstatusbar.h&gt;

#include &lt;kde/kaction.h&gt;

#include &lt;kde/kstdaccel.h&gt;

#include &lt;string.h&gt;

MainWindow::MainWindow(const char * name) : KMainWindow(0L, name) {

 setCaption(&quot;CD Database&quot;);

3. Теперь создайте элементы меню и панели инструментов с помощью виджета KAction.

KAction *addcd_action = new KAction(&quot;&amp;Add CD&quot;, &quot;filenew&quot;,

 KStdAccel::shortcut(KStdAccel::New), this, SLOT(AddCd()), this);

 KAction *quit_action = KStdAction::quit(KApplication::kApplication(),

  SLOT(quit()), actionCollection());

 QPopupMenu* filemenu = new QPopupMenu;

 QString about = (&quot;CD Appnn&quot;

  &quot;(C) 2007 Wrox Pressn&quot; &quot;[email protected]n&quot;);

 QPopupMenu* helpmenu = helpMenu(about);

 menuBar()-&gt;insertItem(&quot;&amp;File&quot;, filemenu);

 menuBar()-&gt;insertltem(i18n(&quot;&amp;Help&quot;), helpmenu);

 addcd_action-&gt;plug(filemenu);

 filemenu-&gt;insertSeparator();

 quit_action-&gt;plug(filemenu);

 addcd_action-&gt;plug(toolBar());

 quit_action-&gt;plug(toolBar());

4. Для разнообразия примените виджеты QBoxLayout вместо обычных классов QLayout:

 QVBox *vbox = new QVBox(this);

 QHBox *hbox = new QHBox(vbox);

 QLabel* label = new QLabel(hbox);

 label-&gt;setText(&quot;Search Text: &quot;);

 search_entry = new QLineEdit(hbox);

 QPushButton *button = new QPushButton(&quot;Search&quot;, hbox);

5. Далее следует виджет QListView, занимающий основную часть рабочей области окна. После этого для поиска компакт-диска в базе данных вы связываете необходимые сигналы с вашим слотом doSearch. Строка состояния KMainWindow становится видимой за счет вставки пустого сообщения:

 list = new QListView(vbox, &quot;name&quot;, 0L);

 list-&gt;setRootIsDecorated(TRUE);

 list-&gt;addColumn(&quot;Title&quot;);

 list-&gt;addColumn(&quot;Artist&quot;);

 list-&gt;addColumn(&quot;Catalogue&quot;);

 connect(button, SIGNAL(clicked()), this, SLOT(doSearch()));

 connect(search_entry, SIGNAL(returnPressed()), this, SLOT(doSearch()));

 statusBar()-&gt;message(&quot;&quot;);

 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-&gt;text());

7. Извлеките id соответствующих компакт-дисков и обновите строку состояния, чтобы отобразить результаты поиска:

 res1 = find_cds(search_text, cd_res);

 sprintf(statusBar_text,

  &quot; Displaying %d result(s) for search string ' %s'&quot;,

1 ... 312 313 314 315 316 317 318 319 320 ... 324
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Основы программирования в Linux - Мэтью Нейл бесплатно.
Комментарии
Открыть боковую панель
Комментарии
Лариса
Лариса 11.03.2026 - 20:17
Странно,здесь имя девочки Аграфена,а на других сайтах я прослушала три книги этого цикла с именем Дарвина.Зачем менять имя и путать читателей? Опечатка- не Дарвина,  а  Дарина.
Григорий
Григорий 09.04.2025 - 22:24
Лучшая книга всех времен
Женя
Женя 02.04.2025 - 16:08
Любимая книга