Название: QTableView: doubleClicked и clicked Отправлено: Danila_Bagrofff от Август 03, 2011, 17:59 Задача в таблице на одинарное нажатие задать одно действие, на двойное другое.
Делаем: Код: connect(qTblVwSearchDocs, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(searchDocEnter(QModelIndex))); В итоге двойное нажатие игнорируется. Как заставить отдельно отрабатывать каждое из событий? ПС. pressed, activated, entered не помогают. Изменение в винде скорости обработки двойоного нажатия тоже. Как реализовать? Название: Re: QTableView: doubleClicked и clicked Отправлено: Пантер от Август 03, 2011, 19:57 clicked 2 раза приходит?
Название: Re: QTableView: doubleClicked и clicked Отправлено: Danila_Bagrofff от Август 04, 2011, 09:17 да, каждое нажатие - clicked.
Как бы побороть.... Название: Re: QTableView: doubleClicked и clicked Отправлено: Пантер от Август 04, 2011, 09:22 В слоте введи переменную на количество кликов и промежуток между ними.
Название: Re: QTableView: doubleClicked и clicked Отправлено: climber от Август 04, 2011, 09:45 А как насчет использования Event'ов? Переопредилите virtual void mouseDoubleClickEvent ( QMouseEvent * event ), должно работать.
Название: Re: QTableView: doubleClicked и clicked Отправлено: Danila_Bagrofff от Август 04, 2011, 12:34 А как насчет использования Event'ов? Переопредилите virtual void mouseDoubleClickEvent ( QMouseEvent * event ), должно работать. не хотелось плодить классы, и так структура зверь... а видимо придется... В слоте введи переменную на количество кликов и промежуток между ними. Так не поможет =) Первое е нажатие отправится в clicked. А в double не попадет.Название: Re: QTableView: doubleClicked и clicked Отправлено: Пантер от Август 04, 2011, 12:41 Первое нажатие попадает в кликед, там сохраняешь текущее время и выставляешь флаг в true. По второму кликеду проверяешь флаг и сравниваешь текущее время с сохраненным. Если флаг в true и время подходит, то вызываешь даблКликед.
Название: Re: QTableView: doubleClicked и clicked Отправлено: GreatSnake от Август 04, 2011, 12:43 А что выдаёт QApplication::doubleClickInterval()?
Название: Re: QTableView: doubleClicked и clicked Отправлено: climber от Август 04, 2011, 12:48 А как насчет использования Event'ов? Переопредилите virtual void mouseDoubleClickEvent ( QMouseEvent * event ), должно работать. не хотелось плодить классы, и так структура зверь... а видимо придется... В слоте введи переменную на количество кликов и промежуток между ними. Так не поможет =) Первое е нажатие отправится в clicked. А в double не попадет.А у Вас QTableView не отдельным классом описан? Если отдельным то просто переопределите для него метод mouseDoubleClickEvent. Если нет, так ничего сложного не вижу в создании отдельного класса, унаследованного от QTableView. В этом классе скроете его реализацию. Такой подход наоборот немного разгрузит вашу "зверскую структуру" ;) Цитировать Первое нажатие попадает в кликед, там сохраняешь текущее время и выставляешь флаг в true. По второму кликеду проверяешь флаг и сравниваешь текущее время с сохраненным. Если флаг в true и время подходит, то вызываешь даблКликед. Больно уж на костыли смахивает. Зачем, если есть стандартный подход? Название: Re: QTableView: doubleClicked и clicked Отправлено: Igors от Август 04, 2011, 12:52 Первое нажатие попадает в кликед, там сохраняешь текущее время и выставляешь флаг в true. По второму кликеду проверяешь флаг и сравниваешь текущее время с сохраненным. Если флаг в true и время подходит, то вызываешь даблКликед. Именно так и делали в Mac Classic :) (только надо еще сравнить позиции мыши равны для обоих кликов). Конечно все будет работать, но это тяжеловато - плюс надо еще заполучить SystemDblClickTime. Хотелось бы попастись на сервисе фреймворка (законный интерес)Название: Re: QTableView: doubleClicked и clicked Отправлено: Пантер от Август 04, 2011, 13:19 Зачем SystemDblClickTime, если есть QApplication::doubleClickInterval()?
Название: Re: QTableView: doubleClicked и clicked Отправлено: Danila_Bagrofff от Август 04, 2011, 15:27 В общем вот так:
Код: #include "Widgets.h" Единственный минус, что стандартный pressed отлавливает нажатие на чек.бокс в окне QTableView, но это не критично. |