Cetus Group
Cetus Logo
Информационные системы и программное обеспечение




Поддержка

 
Разработка программного обеспечения средствами языка C++ и библиотеки Qt
Размещено 01.03.2006
А.Г. © Часть 2 - "Обработчик событий"

С целью реализации полезного обработчика событий в проект, полученный в предыдущем примере необходимо внести небольшие изменения. При это используем то, что функция обработки нажатия на клавишу и необходимое соединение SIGNAL/SLOT были созданы в файле формы form1.ui.

1. Подобно тому, как это было выполнено в примере реализации обработчика событий PyQt опишем производный от класса формы класс (в файле form1impl.h):

#ifndef FORM1IMPL_H
#define FORM1IMPL_H

#include "form1.h"

class Form1Impl : public Form1
{
    Q_OBJECT

public:
    Form1Impl( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
    ~Form1Impl();

public slots:
    virtual void newSlot();

};

#endif // FORM1IMPL_H
и реализуем его (в файле form1impl.cpp):
#include "form1impl.h"

#include <qlineedit.h>
#include <qlabel.h>

Form1Impl::Form1Impl( QWidget* parent, const char* name, WFlags fl )
  : Form1( parent, name, fl ) {}

Form1Impl::~Form1Impl() {}

void Form1Impl::newSlot()
{
  textLabel1->setText(lineEdit1->text());
}

2. С целью активизации производного класса внесем изменения в файл "main1.cpp":

#include <qapplication.h>
#include "form1impl.h"

int main(int argc,char *argv[])
{
    QApplication app(argc,argv);
    Form1Impl form;
    app.setMainWidget(&form);
    form.show();
    return app.exec();
}

3. Добавим новые файлы (form1impl.h, form1impl.cpp) в файл проекта, для этого создаем файл "cppqt2.pro":

TEMPLATE = app

CONFIG += release warn_on qt thread

TARGET = cppqt2

FORMS = form1.ui

HEADERS = form1impl.h

SOURCES = main.cpp form1impl.cpp

4. Генерируем Makefile и строим проект, выполняем программу:

$QTDIR/bin/qmake cppqt2.pro
make
./cppqt2


Copyright©2005, Cetus Group : All rights reserved.