crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Переопределение функции keyPressEvent для определенного виджета
AD
  опции профиля:
сообщение 19.3.2010, 18:41
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


keyPressEvent переопределяется только для главного окна программы. А как сделать, чтобы кнопки, например, "+" и "-" соответствовали только определенному виджету в этом окне?

Сообщение отредактировал AD - 26.3.2010, 13:38
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
kwisp
  опции профиля:
сообщение 25.3.2010, 13:26
Сообщение #2


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(AD @ 25.3.2010, 11:27) *
А что по поводу фокуса ввода? Можно какой-нибудь маленький примерчик?

ну напиши сам маленький тестик. посомотри как фокус ввода меняется.
набери в асситенте Keyboard Focus.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 25.3.2010, 15:45
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Не удается такой финт ушами. :(
Реально, нужна помощь для того, чтобы разобраться.... Я не понимаю, как еще надо переопределить этот класс:
main.h
#ifndef MAIN_H_05555
#define MAIN_H_05555

/// Класс переопределения фильтра событий
class Application: public QApplication
{
    Q_OBJECT

protected:
    bool eventFilter(QObject* object, QEvent* events);

public:
    Application(int& argc, char** argv): QApplication(argc, argv) {}
    ~Application() {}
};

#endif //MAIN_H_05555


main.cpp
#include <QtGui/QApplication>
#include <QtGui>

#include "LibraryBuilder.h"
#include "main.h"

/// Фильтрация событий
bool Application::eventFilter(QObject* object, QEvent* events)
{
    bool p1 = true;
    if(events -> type() == QEvent::KeyPress)
    {
        QKeyEvent* key_events(static_cast<QKeyEvent*> (events));
        switch(key_events -> key())
        {
        case Qt::Key_Plus:
            p1 = false;
        break;
        case Qt::Key_Minus:
        break;
        }
        return QApplication::eventFilter(object, events);
    }

    return QApplication::eventFilter(object, events);
}

/// Главная функция запуска приложения
int main(int argc, char *argv[])
{
    Application a(argc, argv);
    LibraryBuilder w;
    w.show();
    a.connect(&a, SIGNAL(lastWindowClosed()), &a, SLOT(quit()));
    return a.exec();
}


Выдаются следующие ошибки:
Цитата
main.obj : error LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall Application::metaObject(void)const " (?metaObject@Application@@UBEPBUQMetaObject@@XZ)
main.obj : error LNK2001: unresolved external symbol "public: virtual void * __thiscall Application::qt_metacast(char const *)" (?qt_metacast@Application@@UAEPAXPBD@Z)
main.obj : error LNK2001: unresolved external symbol "public: virtual int __thiscall Application::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@Application@@UAEHW4Call@QMetaObject@@HPAPAX@Z)

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- AD   Переопределение функции keyPressEvent для определенного виджета   19.3.2010, 18:41
- - Litkevich Yuriy   1) проверять в фокусе ли виджет 2) поставить фильт...   19.3.2010, 19:38
|- - AD   1) А какая именно функция проверяет? Не помню.... ...   22.3.2010, 18:18
|- - AD   Как поставить фильтр событий на нужный виджет?   23.3.2010, 13:33
- - Litkevich Yuriy   Цитата(AD @ 23.3.2010, 16:33) фильтр собы...   23.3.2010, 13:55
|- - AD   Cделал так. Что-то не то... Не заходит при нажатии...   23.3.2010, 16:05
|- - AD   Пожалуйста, помогите понять, как правильно сделать...   23.3.2010, 17:23
|- - AD   У меня не заходит внутрь условия, так как попадает...   24.3.2010, 10:20
- - kwisp   AD, по твоему коду вообще не понятно что ты хочеш...   24.3.2010, 11:08
|- - AD   Цитата(kwisp @ 24.3.2010, 11:08) AD, по ...   24.3.2010, 11:24
- - kwisp   Цитата(AD @ 24.3.2010, 11:24) Я хочу видж...   24.3.2010, 11:33
|- - AD   б)   24.3.2010, 11:54
- - kwisp   теперь ясно почему используешь eventFilter(). непо...   24.3.2010, 12:24
|- - AD   Цитата(kwisp @ 24.3.2010, 12:24) далее не...   24.3.2010, 12:42
- - kwisp   подозревают мешают проверки о которых я говорил. п...   24.3.2010, 12:50
|- - AD   Цитата(kwisp @ 24.3.2010, 12:50) подозрев...   24.3.2010, 13:00
- - kwisp   AD, остается фокус ввода. что дает его изменение ...   24.3.2010, 13:08
|- - AD   Цитата(kwisp @ 24.3.2010, 13:08) AD, ост...   24.3.2010, 15:38
- - kwisp   Цитата(AD @ 24.3.2010, 15:38) В виджете, ...   25.3.2010, 8:27
|- - AD   Цитата(kwisp @ 25.3.2010, 8:27) от куда т...   25.3.2010, 9:59
- - kwisp   Цитата(AD @ 25.3.2010, 9:59) Какой глобал...   25.3.2010, 10:21
|- - AD   Цитата(kwisp @ 25.3.2010, 10:21) если не ...   25.3.2010, 10:29
- - kwisp   AD, и я повторюсь. Попробуй унаследоваться от QAp...   25.3.2010, 10:37
|- - AD   А что по поводу фокуса ввода? Можно какой-нибудь м...   25.3.2010, 11:27
- - kwisp   Цитата(AD @ 25.3.2010, 11:27) А что по по...   25.3.2010, 13:26
|- - AD   Не удается такой финт ушами. Реально, нужна помощ...   25.3.2010, 15:45
|- - AD   Удалось попасть в глобальный фильтр событий, но дл...   26.3.2010, 13:36
- - kwisp   вопрос не по теме по-моему. попробуй вынести вынес...   25.3.2010, 16:06
- - AD   Цитата(kwisp @ 25.3.2010, 16:06) вопрос н...   25.3.2010, 16:43


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 18.2.2025, 21:49