成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

QT平臺(tái)上模擬鼠標(biāo)事件案例

移動(dòng)開(kāi)發(fā)
QT平臺(tái)上模擬鼠標(biāo)事件案例是本文要介紹的內(nèi)容,主要是來(lái)了解QT平臺(tái)上的模擬鼠標(biāo)事件的應(yīng)用,具體內(nèi)容的實(shí)現(xiàn)來(lái)看本文詳解。

QT平臺(tái)模擬鼠標(biāo)事件案例是本文要介紹的內(nèi)容,主要是來(lái)了解QT平臺(tái)上的模擬鼠標(biāo)事件的應(yīng)用,具體內(nèi)容的實(shí)現(xiàn)來(lái)看本文詳解。需要導(dǎo)入QTest4.lib 否則會(huì)有連接時(shí)錯(cuò)誤

  1. #include<QtTest/QTest> 
  2. QTest::mouseClick(ui.mainPlayer,Qt::LeftButton,0,pos(),-1); 

QT平臺(tái)模擬鼠標(biāo)按鍵

和模擬鍵盤(pán)按鍵類(lèi)似,也是通過(guò)發(fā)送相應(yīng)的事件來(lái)實(shí)現(xiàn)的,安裝相應(yīng)的事件監(jiān)聽(tīng)器,具體發(fā)送事件:

  1. QPoint pos;  
  2. pos.setX(88);  
  3. pos.setY(58);  
  4. QMouseEvent *mEvnPress;  
  5. QMouseEvent *mEvnRelease;  
  6. mEvnPress = new QMouseEvent(QEvent::MouseButtonPress, pos, Qt::LeftButton,Qt::LeftButton, Qt::NoModifier);  
  7. QApplication::sendEvent(QWidget::focusWidget(),mEvnPress);  
  8. mEvnRelease = new QMouseEvent(QEvent::MouseButtonRelease, pos, Qt::LeftButton,Qt::LeftButton, Qt::NoModifier);  
  9. QApplication::sendEvent(QWidget::focusWidget(),mEvnRelease);       

主要的分析函數(shù)是:    

  1. QMouseEvent::QMouseEvent ( Type type, const QPoint & position,Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiersmodifiers ) 

參數(shù)分析:

  1. The type parameter must be one of QEvent::MouseButtonPress,QEvent::MouseButtonRelease, QEvent::MouseButtonDblClick, or QEvent::MouseMove.  
  2. The position is the mouse cursor's position relative to the receiving widget.   
  3. The button that caused the event is given as a value from the Qt::MouseButtonenum.   
  4.       If the event type is MouseMove, the appropriate button for this event isQt::NoButton.   
  5. The mouse and keyboard states at the time of the event are specified by buttonsand modifiers.  
  6. The globalPos() is initialized to QCursor::pos(), which may not be appropriate.Use the other constructor to specify the global position explicitly. 

主要說(shuō)明:

這里的pos的位置是接受鼠標(biāo)事件的widget的內(nèi)部的一個(gè)局部位置。也就是說(shuō)他的鼠標(biāo)按鍵的產(chǎn)生點(diǎn)是:先通過(guò)QApplication::sendEvent(QWidget::focusWidget(),mEvnPress);//也就是說(shuō)先是指明了傳遞給哪個(gè)widget,然后再根據(jù)mEventPress來(lái)進(jìn)行具體的再改widget中的定位,以及具體的按鍵是什么。

  1. bool MainWidget::eventFilter(QObject*target, QEvent *event)  
  2. {  
  3.    if(event->type()==QEvent::FocusIn){//event->type()==QEvent::Enter||  
  4.        static_cast<QPushButton*>(target)->setStyleSheet("background-color:rgb(129, 129,129)");  
  5.  
  6.        QPalette pal;  
  7.      pal.setColor(QPalette::Active,QPalette::ButtonText,Qt::red);          
  8.        static_cast<QPushButton*>(target)->setPalette(pal);  
  9.    }  
  10.    elseif(event->type()==QEvent::FocusOut){//event->type()==QEvent::Leave ||  
  11.        static_cast<QPushButton*>(target)->setStyleSheet("");  
  12.        QPalette pal;  
  13.        pal.setColor(QPalette::Active,QPalette::ButtonText,Qt::black);  
  14.        static_cast<QPushButton*>(target)->setPalette(pal);  
  15.    }  
  16.    else if(event->type()== QEvent::KeyPress){  
  17.        QPoint pos;  
  18.        QWidget *now_buttonQWidget::focusWidget();  
  19.        QKeyEvent *k = (QKeyEvent *)event;  
  20.        QLayoutItem *next_button;  
  21.        switch (k->key()){  
  22.        case Qt::Key_Up:  
  23.             next_button=ui->gridLayout->itemAt((ui->gridLayout->indexOf(now_button)+8)%12);  
  24.             next_button->widget()->setFocus();  
  25.             break;  
  26.        case Qt::Key_Down:  
  27.             next_button=ui->gridLayout->itemAt((ui->gridLayout->indexOf(now_button)+4)%12);  
  28.            next_button->widget()->setFocus();  
  29. #ifdef COURSE  
  30.             QCursor::setPos(pos);  
  31. #endif  
  32.             break;  
  33.        case Qt::Key_Left:  
  34.             next_button=ui->gridLayout->itemAt((ui->gridLayout->indexOf(now_button)-1+12)%12);  
  35.            next_button->widget()->setFocus();  
  36. #ifdef COURSE  
  37.             QCursor::setPos(pos);  
  38. #endif  
  39.             break;  
  40.        case Qt::Key_Right:  
  41.             next_button=ui->gridLayout->itemAt((ui->gridLayout->indexOf(now_button)+1)%12);  
  42.            next_button->widget()->setFocus();  
  43.             break;  
  44.        case Qt::Key_Period:  
  45.             pos = now_button->pos();  
  46.             pos.setX( 20 +pos.x()+(now_button->width())/2 );  
  47.             pos.setY( 20 +pos.y()+(now_button->height())/2 );  
  48.             //printf("/n***%d1%d***/n",pos.x(),pos.y());  
  49. #ifdef COURSE  
  50.             QCursor::setPos(pos);  
  51. #endif  
  52.             pos.setX(88);  
  53.             pos.setY(58);  
  54.             QMouseEvent *mEvnPress;  
  55.             QMouseEvent *mEvnRelease;  
  56.             mEvnPress = newQMouseEvent(QEvent::MouseButtonPress, pos, Qt::LeftButton, Qt::LeftButton,Qt::NoModifier);  
  57.            QApplication::sendEvent(QWidget::focusWidget(),mEvnPress);  
  58.             mEvnRelease = newQMouseEvent(QEvent::MouseButtonRelease, pos, Qt::LeftButton, Qt::LeftButton,Qt::NoModifier);  
  59.            QApplication::sendEvent(QWidget::focusWidget(),mEvnRelease);  
  60.             next_button =ui->gridLayout->itemAt(ui->gridLayout->indexOf(QWidget::focusWidget()));  
  61.             break;  
  62.        default:  
  63.             returnQWidget::eventFilter(target,event);  
  64.        }  
  65.  
  66.        if(next_button){  
  67.             pos.setX( 20 +next_button->geometry().x() + (next_button->geometry().width()) / 2 );  
  68.             pos.setY( 20 +next_button->geometry().y() + (next_button->geometry().height()) / 2);  
  69. #ifdef COURSE  
  70.             QCursor::setPos(pos);  
  71. #endif  
  72.        }  
  73.        return true;  
  74.    }  
  75.    return QWidget::eventFilter(target,event);  

小結(jié):QT平臺(tái)模擬鼠標(biāo)事件案例的內(nèi)容介紹完了,希望通過(guò)QT平臺(tái)模擬鼠標(biāo)內(nèi)容的學(xué)習(xí)能對(duì)你有所幫助!

責(zé)任編輯:zhaolei 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-08-29 11:25:29

QTWebKit鼠標(biāo)

2009-01-16 09:10:39

JavaCRM系統(tǒng)企業(yè)應(yīng)用

2012-06-12 09:43:34

微軟Linux服務(wù)

2010-06-09 17:46:53

2013-05-14 11:08:23

AIR Android觸摸事件鼠標(biāo)事件

2009-12-30 10:44:38

Silverlight

2016-12-28 09:30:37

Andriod安卓平臺(tái)依賴(lài)注入

2017-02-23 13:51:05

2019-11-26 14:52:40

Linux工具寫(xiě)作者

2011-07-28 15:07:23

iOS猜數(shù)游戲

2017-03-20 17:20:35

iOSTensorFlow

2013-08-27 10:31:05

Headless模式Java SE設(shè)計(jì)模式

2011-06-22 10:20:11

QT 鼠標(biāo) 拖放

2011-06-23 14:05:32

Qt 事件機(jī)制

2017-11-06 08:52:59

Linux終端模擬器Java 9

2010-01-04 14:06:35

Silverlight

2010-03-22 09:30:55

Linux非開(kāi)源軟件

2015-07-08 11:28:53

云服務(wù)平臺(tái)Docker MachDocker

2017-09-28 09:25:50

SQL ServerLinuxWindows

2009-01-08 18:05:27

服務(wù)器微軟云計(jì)算
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产成人精品综合 | 日本不卡一区 | 超碰免费在 | 毛片免费看 | 欧美日韩精品中文字幕 | 精品久久久久久久久久久久 | 综合久久综合久久 | 中文在线a在线 | 日韩在线一区二区三区 | 大吊一区二区 | 黄网站涩免费蜜桃网站 | 亚洲精品中文在线 | 四虎永久免费黄色影片 | 日日夜夜天天干 | 精品无码久久久久久久动漫 | 久久久99精品免费观看 | 国产有码 | 特黄级国产片 | 欧美日韩在线观看视频网站 | 午夜大片 | 欧美成人a | 九九国产在线观看 | 欧美激情在线观看一区二区三区 | 国产成人免费视频 | 亚洲免费视频在线观看 | 亚洲福利av | av片在线观看网站 | 午夜小视频在线播放 | 最新日韩在线视频 | 久久久成人网 | 久久久久亚洲精品 | 国产成人在线观看免费 | 国内久久 | 操久久| 三级免费av| 亚洲午夜精品 | 91精品在线播放 | 亚洲a在线视频 | 日韩a在线 | 欧美专区在线观看 | 一区二区三区视频在线观看 |