发信人: yexunkai(叶云)
整理人: wenbobo(2003-09-19 09:20:31), 站内信件
|
嵌入到Qt-embedded 3.1.2中的部份。
#include "qmouseelo_qws.h" // QWSEloMouseHandler, QWSEloMouseHandlerPrivate
#include "qsocketnotifier.h" //QSocketNotifier
#include "qgfx_qws.h" // qt_screen
#include "unistd.h" // usleep()
QWSEloMouseHandler::QWSEloMouseHandler( const QString & drv, const QString & dev )
{
d = new QWSEloMouseHandlerPrivate( this );
setFilterSize( 3 );
}
QWSEloMouseHandler::~QWSEloMouseHandler()
{
delete d;
}
QWSEloMouseHandlerPrivate::QWSEloMouseHandlerPrivate( QWSEloMouseHandler * h )
: handler( h )
{
mouseFD = -1;
EloInit( &m_Elo );
EloControl( &m_Elo, &mouseFD, ELO_DEVICE_INIT );
usleep( 20000 );
// setup the error handling !!!!
EloControl( &m_Elo, &mouseFD, ELO_DEVICE_ON );
usleep( 20000 );
QSocketNotifier * mouseNotifier;
mouseNotifier = new QSocketNotifier( mouseFD, QSocketNotifier::Read, this );
connect( mouseNotifier, SIGNAL( activated( int ) ), this, SLOT( readMouseData() ) );
}
QWSEloMouseHandlerPrivate::~QWSEloMouseHandlerPrivate()
{
EloControl( &m_Elo, &mouseFD, ELO_DEVICE_OFF );
}
void QWSEloMouseHandlerPrivate::readMouseData()
{
int x, y, state;
static bool isHandling;
if ( !qt_screen || isHandling ) return;
isHandling = TRUE;
usleep( 20000 ); // wait 20ms for mouse position data to arrive from touch screen.
EloReadInput( &m_Elo, mouseFD, &x, &y, &state ); // read data once
if ( x ) {
QPoint mousePos;
mousePos.setX(x);
mousePos.setY(y);
if ( state == ELO_PRESS || state == ELO_STREAM ) {
handler->mouseChanged( mousePos, Qt::LeftButton );
} else {
handler->mouseChanged( mousePos, Qt::NoButton );
}
}
isHandling = FALSE;
}
---- 有兴趣请直接寄信,
在下上线时间不定,
回应帖子也比较慢。
|
|