Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: BuRn от Ноябрь 20, 2011, 19:05



Название: отловить клик на QLineEdit
Отправлено: BuRn от Ноябрь 20, 2011, 19:05
Собственно как , если делаю
 QLineEdit  *w = (QLineEdit *)sender();
    w->clear();
приложение вылетает


Название: Re: отловить клик на QLineEdit
Отправлено: Пантер от Ноябрь 20, 2011, 19:15
Значит, sender не QLineEdit.

И делай правильный каст:

QLineEdit  *w = qobject_cast <QLineEdit *> (sender());
Q_CHECK_PTR (w);


Название: Re: отловить клик на QLineEdit
Отправлено: BuRn от Ноябрь 20, 2011, 19:19
да затупил, сигнал отдает баттон, вот после того как по баттону сделали клик , нужно как-то отловить QLineEdit который в фокусе


Название: Re: отловить клик на QLineEdit
Отправлено: Пантер от Ноябрь 20, 2011, 19:20
Это сложновато сделать - при клике на кнопку, фокус будет у нее.


Название: Re: отловить клик на QLineEdit
Отправлено: BuRn от Ноябрь 20, 2011, 19:22
ммм, какие тогда есть решения


Название: Re: отловить клик на QLineEdit
Отправлено: BuRn от Ноябрь 20, 2011, 19:24
не знаю будет ли работать, но если сделать обработчик на lineEdit как только в него кликнули. запомнить объект, после обработчик на баттон берет объект и делает его clear, прокатит ?


Название: Re: отловить клик на QLineEdit
Отправлено: Пантер от Ноябрь 20, 2011, 19:28
Попробуй заюзать
QWidget * QWidget::focusWidget () const
Может, поможет.


Название: Re: отловить клик на QLineEdit
Отправлено: andrew.k от Ноябрь 20, 2011, 19:29
думаю, если мы узнаем, что нужно получить, может оказаться, что не требуются подобные извращения.
Очередной хитроумный интерфейс?


Название: Re: отловить клик на QLineEdit
Отправлено: BuRn от Ноябрь 20, 2011, 19:31
Попробуй заюзать
QWidget * QWidget::focusWidget () const
Может, поможет.
пробовал, не поможет
добавляю к примеру inputPanel функцию очистки всего lineEdita если быть точным


Название: Re: отловить клик на QLineEdit
Отправлено: andrew.k от Ноябрь 20, 2011, 19:33
так у тебя ж кнопка "очистить" и сам lineEdit на разных формах должен быть, на сколько я понимаю?
Тогда проблемы не должно быть.


Название: Re: отловить клик на QLineEdit
Отправлено: BuRn от Ноябрь 20, 2011, 19:35
к примеру , 2 лайн эдита , на 1 форме . тыкаю на первый лайн эдит , вываливается окошко , при нажатии на кнопку очистить должно очистится тот лайн эдит на который тыкнули, вот так


Название: Re: отловить клик на QLineEdit
Отправлено: andrew.k от Ноябрь 20, 2011, 19:37
к примеру , 2 лайн эдита , на 1 форме . тыкаю на первый лайн эдит , вываливается окошко , при нажатии на кнопку очистить должно очистится тот лайн эдит на который тыкнули, вот так
Кнопка "очистки" на "вываливающемся окошке"?


Название: Re: отловить клик на QLineEdit
Отправлено: BuRn от Ноябрь 20, 2011, 19:38
да


Название: Re: отловить клик на QLineEdit
Отправлено: andrew.k от Ноябрь 20, 2011, 20:01
да
Тогда в чем вообще проблема?


Название: Re: отловить клик на QLineEdit
Отправлено: BuRn от Ноябрь 20, 2011, 20:02
в получении самого этого lineEdit - а


Название: Re: отловить клик на QLineEdit
Отправлено: andrew.k от Ноябрь 20, 2011, 20:03
в получении самого этого lineEdit - а
А каким образом кнопка 1 добавляет в текущий лайнедит единицу?
Ты разобрался?


Название: Re: отловить клик на QLineEdit
Отправлено: BuRn от Ноябрь 20, 2011, 20:09
да , через Event и QKeyEvent


Название: Re: отловить клик на QLineEdit
Отправлено: andrew.k от Ноябрь 20, 2011, 20:14
да , через Event и QKeyEvent
а  кому посылается этот евент? и как? разобрался?


Название: Re: отловить клик на QLineEdit
Отправлено: BuRn от Ноябрь 20, 2011, 20:17
QPointer<QWidget> w = focusWidget();
собственно ему и посылается
просто хз как туда же послать событие очистки всего lineEdita или я чот не то разобрался


Название: Re: отловить клик на QLineEdit
Отправлено: andrew.k от Ноябрь 20, 2011, 20:23
ты уже во втором сообщении получил ответ на свой вопрос.
Посылать сообщение не нужно.
Нужно просто вызвать метод clear()


Название: Re: отловить клик на QLineEdit
Отправлено: BuRn от Ноябрь 20, 2011, 20:25
а можно пример, со своим случаем я сам разберусь теперь, спасибо, мне бы простой примерчик какой-нибудь


Название: Re: отловить клик на QLineEdit
Отправлено: BuRn от Ноябрь 20, 2011, 20:27
просто так то что бы его вызвать нужно знать объект, на который он будет вызываться


Название: Re: отловить клик на QLineEdit
Отправлено: andrew.k от Ноябрь 20, 2011, 20:34
Код
C++ (Qt)
QLineEdit  *le = qobject_cast <QLineEdit *> (focusWidget());
if (w)
 le->clear();


Название: Re: отловить клик на QLineEdit
Отправлено: BuRn от Ноябрь 20, 2011, 20:36
спасибо, ну а разве фокусвиджет будет не то самое окошко которое с кнопками ввода ?


Название: Re: отловить клик на QLineEdit
Отправлено: andrew.k от Ноябрь 20, 2011, 20:39
Смотря где вызовешь focusWidget, если в окошке с кнопками ввода, то конечно.
Но у тебя то не так. У тебя же фокусВиджету посылаются события, как ты сказал выше, значит оно на другой форме.


Название: Re: отловить клик на QLineEdit
Отправлено: BuRn от Ноябрь 20, 2011, 20:54
спасибо