Читать книгу 📗 "Основы программирования в Linux - Мэтью Нейл"
#include <qlineedit.h>class MainWindow : public KMainWindow { Q_OBJECTpublic: 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. Теперь создайте элементы меню и панели инструментов с помощью виджета
KActionKAction *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 Appnn" "(C) 2007 Wrox Pressn" "[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. Для разнообразия примените виджеты
QBoxLayoutQLayout 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. Далее следует виджет
QListViewdoSearchKMainWindow list = new QListView(vbox, "name", 0L); 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. Слот
doSearchdoSearchvoid 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'",