Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt GUI _ потеря фокуса

Автор: flankerr 11.9.2008, 12:43

как отловить потерю фокуса у диалога ?

Автор: trdm 11.9.2008, 13:06

QWidget::focusInEvent/ QWidget::focusOutEvent?
Ассистант рулит....

Автор: flankerr 11.9.2008, 13:46

Цитата(trdm @ 11.9.2008, 14:06) *
QWidget::focusInEvent/ QWidget::focusOutEvent?Ассистант рулит....

рулит одназначно! А ещё больше рулит личный опыт! ;)

НЕ работает! или я не умею "готовить"....

Автор: ЙаМайскЫйПчОЛ 11.9.2008, 13:55

Личный опыт на иностранном языке звучит как first experience, и открывает сущность термина.
Он всегда первый и не может быть передан с сохранением личностных свойств.
Если тебе нужен личный опыт, тогда исследуй сам.
а

Цитата(flankerr @ 11.9.2008, 14:46) *
НЕ работает! или я не умею "готовить"....


тогда давай код.

Автор: flankerr 11.9.2008, 14:03

Цитата(ЙаМайскЫйПчОЛ @ 11.9.2008, 14:55) *
Личный опыт на иностранном языке звучит как first experience, и открывает сущность термина.
Он всегда первый и не может быть передан с сохранением личностных свойств.
Если тебе нужен личный опыт, тогда исследуй сам.
]
нашла каса на камень и пошла философия :)

что касается опыта...
просто хотел сказать что посмотреть в ассистенс могу и сам и просто тупо торкать носом туда не стоит, особенно если нет своего опыта работы с озвученым ворпосом;) если написал тут значит что-то не сраслось...



код...
ну я тупо взял ассистенс..
и переопредлил у себя в классе диалога focusOutEvent ( QFocusEvent * event ) и вот после потери фокуса в эту функцию вхождений нет.

Автор: ЙаМайскЫйПчОЛ 11.9.2008, 14:23

А ты ему перед этим setFocus делаешь?

assistant
A widget normally must setFocusPolicy() to something other than Qt::NoFocus in order to receive focus events. (Note that the application programmer can call setFocus() on any widget, even those that do not normally accept focus.)

так что поробуй явно.

Автор: flankerr 11.9.2008, 14:26

явным образом нет.
идея проста
1. создал дилог через new
2.сделал show т.е вывел диалог на экран
3.как только фокус теряется (ну предположим я мышкой щёлкаю в не области диалога) мне надо получить какоето сообзение.

Автор: ЙаМайскЫйПчОЛ 11.9.2008, 15:33

???
вобщем не дождался от тебя реакции.

#ifndef DIALOGIMPL_H
#define DIALOGIMPL_H
//
#include <QDialog>
#include "ui_dialog.h"
//
class DialogImpl : public QDialog, public Ui::Dialog
{
Q_OBJECT
public:
    DialogImpl( QWidget * parent = 0, Qt::WFlags f = 0 ): QDialog(parent, f)
    {
        setupUi(this);
        setFocus();
    }
private slots:
    void focusOutEvent(QFocusEvent *) { /*set code*/ }
};
#endif

это работает
если проблеммы читай http://www.forum.crossplatform.ru/index.php?s=&showtopic=814&view=findpost&p=8423

Автор: flankerr 11.9.2008, 16:31

толи лыжи не едут толи я...
у меян не работает...
единственное отличие это то что у меня нет setupUi(this); и public Ui::Dialog

class DialogImpl : public QDialog
{
Q_OBJECT
public:
    DialogImpl( QWidget * parent = 0, Qt::WFlags f = 0 ): QDialog(parent, f)
    {
        setFocus();
    }
private slots:
    void focusOutEvent(QFocusEvent *) { /*set code*/ }
};


лыжи поехали...
оказалось без ui_dialog.h работать не будет
создал диалог в редакторе и заработало

Плин focusOutEvent вызывается во всех случаях если мышкой торкнуть в не оласти ЗАГОЛОВКА.
т.е. даже если я торкаю по комбоксу внутри лдиалога то вызывется focusOutEvent....

Автор: flankerr 11.9.2008, 17:59

продолжение вынес в отдельную тему...

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)