Russian Qt Forum

Qt => Общие вопросы => Тема начата: crocus от Июль 30, 2007, 12:20



Название: Недопонимаю про event
Отправлено: crocus от Июль 30, 2007, 12:20
Если создавать виджет динамически, наследуясь от чего-либо - вроде понятно, и здесь неоднократно обсуждалось, а если в дизайнере - не вкуриваю, есть форма - базовый QWidget- на ней виджет graphicsView - не пойму как обработать события мыши или клавиатуры??


Название: Недопонимаю про event
Отправлено: bigirbis от Июль 30, 2007, 12:36
Смотри в сторону eventFilter


Название: Недопонимаю про event
Отправлено: Gryz от Июль 31, 2007, 10:26
Или в дизайнере щелкаешь правой клавишей по виджету и делаешь "promote to custom widget"


Название: Недопонимаю про event
Отправлено: SABROG от Июль 31, 2007, 10:53
Цитата: "Gryz"
Или в дизайнере щелкаешь правой клавишей по виджету и делаешь "promote to custom widget"


Я правильно понимаю, сначала надо подготовить .h файл с определением класса наследника, который и указывать в диалоге Promote to ... ?


Название: Недопонимаю про event
Отправлено: crocus от Июль 31, 2007, 11:05
Я валяюсь бля с содержательных ответов,  eventFilter - правда помог :)


Название: Недопонимаю про event
Отправлено: SABROG от Июль 31, 2007, 11:57
Цитата: "crocus"
Я валяюсь бля с содержательных ответов,  eventFilter - правда помог :)


Я спрашиваю, чтобы не создавать отдельную тему, тем более, что в этой теме мне не ответили - http://prog.org.ru/forum/topic_6030.html
А тут раз советуют, значит ответ знают...


Название: Недопонимаю про event
Отправлено: Gryz от Август 02, 2007, 22:56
Цитата: "SABROG"
Цитата: "Gryz"
Или в дизайнере щелкаешь правой клавишей по виджету и делаешь "promote to custom widget"


Я правильно понимаю, сначала надо подготовить .h файл с определением класса наследника, который и указывать в диалоге Promote to ... ?

Да

добавлено спустя 13 минут:

 Создаешь просто наследника нужного визуального компонента. Фильтров событий не всегда хватает или бывает не слишком удобно их использовать.


Название: Недопонимаю про event
Отправлено: SABROG от Август 03, 2007, 07:54
Увидел вчера, что сами тролли в Qt Assistante используют installEventFilter.


Название: Недопонимаю про event
Отправлено: Gryz от Август 03, 2007, 12:53
Имеешь ввиду реализацию ассистанта?


Название: Недопонимаю про event
Отправлено: SABROG от Август 03, 2007, 13:13
Цитата: "Gryz"
Имеешь ввиду реализацию ассистанта?


Да, в исходном коде:

Код:

HelpWindow *TabbedBrowser::createHelpWindow()
{
    MainWindow *mainWin = mainWindow();
    HelpWindow *win = new HelpWindow(mainWin, 0);
    win->setFrameStyle(QFrame::NoFrame);
    win->setPalette(palette());
    win->setSearchPaths(Config::configuration()->mimePaths());
    ui.tab->addTab(win, tr("..."));
    connect(win, SIGNAL(highlighted(QString)),
             (const QObject*) (mainWin->statusBar()), SLOT(showMessage(QString)));
    connect(win, SIGNAL(backwardAvailable(bool)),
             mainWin, SLOT(backwardAvailable(bool)));
    connect(win, SIGNAL(forwardAvailable(bool)),
             mainWin, SLOT(forwardAvailable(bool)));
    connect(win, SIGNAL(sourceChanged(QUrl)), this, SLOT(sourceChanged()));

    ui.tab->cornerWidget(Qt::TopRightCorner)->setEnabled(ui.tab->count() > 1);
win->installEventFilter(this);
win->viewport()->installEventFilter(this);
    ui.editFind->installEventFilter(this);
    return win;
}