中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

國內(nèi)室內(nèi)設(shè)計(jì)師南寧百度seo軟件

國內(nèi)室內(nèi)設(shè)計(jì)師,南寧百度seo軟件,澳門網(wǎng)站建設(shè),旅游網(wǎng)站網(wǎng)頁設(shè)計(jì)報(bào)告Qt事件處理 一、事件基礎(chǔ) 事件是Qt應(yīng)用程序中的基本構(gòu)建塊,它們代表了一些特定的行為或狀態(tài)變化。事件可以是鼠標(biāo)點(diǎn)擊、鍵盤輸入、窗口大小改變、定時(shí)器事件等。每個(gè)事件都是一個(gè)對象,繼承自QEvent類。 二、事件常見類型 Qt中的事件分為多種類型&…

Qt事件處理

一、事件基礎(chǔ)

事件是Qt應(yīng)用程序中的基本構(gòu)建塊,它們代表了一些特定的行為或狀態(tài)變化。事件可以是鼠標(biāo)點(diǎn)擊、鍵盤輸入、窗口大小改變、定時(shí)器事件等。每個(gè)事件都是一個(gè)對象,繼承自QEvent類。

二、事件常見類型

Qt中的事件分為多種類型,每種類型對應(yīng)不同的行為。以下是一些常見的事件類型:
1、鍵盤事件(QKeyEvent): 處理鍵盤按鍵的按下和松開事件。

2、鼠標(biāo)事件(QMouseEvent): 處理鼠標(biāo)移動(dòng)、鼠標(biāo)按鍵的按下和松開事件。

3、拖放事件(QDragEvent 和 QDropEvent): 用鼠標(biāo)進(jìn)行拖放操作時(shí)涉及的事件,包括拖拽和放置。

4、滾輪事件(QWheelEvent): 處理鼠標(biāo)滾輪的滾動(dòng)事件。

5、繪圖事件(QPaintEvent): 在控件需要重新繪制時(shí)觸發(fā),用于自定義繪制。

6、定時(shí)事件(QTimerEvent): 在定時(shí)器到期時(shí)觸發(fā),用于執(zhí)行周期性任務(wù)。

7、焦點(diǎn)事件(QFocusEvent): 處理鍵盤焦點(diǎn)的移動(dòng),如窗口控件獲得或失去焦點(diǎn)。

8、進(jìn)入和離開事件(QEnterEvent 和 QLeaveEvent): 處理鼠標(biāo)移入或移出窗口控件的事件。

9、移動(dòng)事件(QMoveEvent): 處理窗口控件的位置改變事件。

10、大小改變事件(QResizeEvent): 處理窗口控件的大小改變事件。

11、顯示和隱藏事件(QShowEvent 和 QHideEvent): 處理窗口控件的顯示和隱藏事件。

12、窗口事件(QWindowStateChangeEvent): 處理窗口是否為當(dāng)前窗口的狀態(tài)變化事件。

三、事件接收者

每個(gè)繼承自QObject的類都可以成為一個(gè)事件接收者,這意味著它能夠接收并處理事件。窗口小部件(widget)如QWidget、QMainWindow以及其他繼承自它們的控件都是事件接收者的例子。

四、事件過濾器

Qt允許您在事件到達(dá)接收者之前攔截和處理事件。這通過事件過濾器實(shí)現(xiàn),即在事件到達(dá)目標(biāo)對象之前先經(jīng)過另一個(gè)對象的處理。這對于全局事件處理或者對多個(gè)對象應(yīng)用相同邏輯的情況非常有用。

五、事件處理步驟

1、選擇事件接收者:

首先,您需要確定哪個(gè)對象將成為事件的接收者。通常,這是一個(gè)繼承自QWidget的窗口小部件或其他繼承自QObject的類。

2、重寫事件處理函數(shù):

根據(jù)您要處理的事件類型,在事件接收者類中找到相應(yīng)的事件處理函數(shù),并進(jìn)行重寫。每個(gè)事件類型都對應(yīng)一個(gè)特定的函數(shù),例如:keyPressEvent、mousePressEvent、paintEvent等。

3、編寫事件處理邏輯:

在事件處理函數(shù)中,您可以編寫處理特定事件的代碼邏輯。例如,在keyPressEvent中,您可以檢查按下的鍵,并根據(jù)需要執(zhí)行操作。

4、調(diào)用基類事件處理函數(shù):

如果您希望在處理完事件后將其傳遞給基類進(jìn)行進(jìn)一步處理,可以通過調(diào)用基類的事件處理函數(shù)來實(shí)現(xiàn)。這在您希望繼續(xù)保留默認(rèn)行為的情況下很有用。

六、常見三種事件處理應(yīng)用

1、重寫特定的事件處理函數(shù)

例如:mousePressEvent(), keyPressEvent(), paintEvent()。 這樣的特定事件處理函數(shù)

下面是重寫特定的keyPressEvent()函數(shù)實(shí)現(xiàn)鍵盤上、下、左和右鍵盤的控制

void Widget::keyPressEvent(QKeyEvent *event)
{switch (event->key()) {case Qt::Key_Up:ui->label->move(ui->label->x(), ui->label->y()-4);break;case Qt::Key_Down:ui->label->move(ui->label->x(), ui->label->y()+4);break;case Qt::Key_Left:ui->label->move(ui->label->x()-4, ui->label->y());break;case Qt::Key_Right:ui->label->move(ui->label->x()+4, ui->label->y());break;default:break;}
}

下面是重寫特定的mouseMoveEvent()函數(shù)實(shí)現(xiàn)

//鼠標(biāo)特殊設(shè)備,必須按下任意鍵 移動(dòng)時(shí)才會產(chǎn)生鼠標(biāo)移動(dòng)事件
void Widget::mouseMoveEvent(QMouseEvent *event)
{//x():獲取當(dāng)前鼠標(biāo)在界面的x軸坐標(biāo)ui->label->move(event->x() - ui->label->width()/2, event->y() - ui->label->height()/2);
}

2、重寫所有事件的處理函數(shù)(event())

  • 1、界面的產(chǎn)生的任何事件處理首先是調(diào)用基類的event()方法進(jìn)行處理
  • 2、event()函數(shù)內(nèi)部,判斷事件的類型,然后迪奧用基類的特定的事件出來器進(jìn)行處理
  • 3、如果是派生類重寫了特定事件處理器,則event()調(diào)用了派生類重寫的虛函數(shù),實(shí)現(xiàn)新功能

注意:如果派生類的重寫了event()虛函數(shù),則界面產(chǎn)生的事件預(yù)先調(diào)用派生類重寫的event()方法

  • ①判斷自己感興趣的事件,實(shí)現(xiàn)新功能,處理完返回true
  • ②不感興趣的事件,則需要手動(dòng)調(diào)用基類QWidgetevent()函數(shù)進(jìn)行默認(rèn)處理,返回基類處理的結(jié)果
bool Widget::event(QEvent *event)
{if(event->type() == QKeyEvent::KeyPress){//這里我們直接調(diào)用上面重寫特定好的函數(shù)實(shí)現(xiàn)鼠標(biāo)按下的事件keyPressEvent((QKeyEvent *)event);return true;}if(event->type() == QMouseEvent::MouseMove){//這里就是直接把重寫鼠標(biāo)移動(dòng)MouseMove事件邏輯的全部代碼放到里面來QMouseEvent *e = (QMouseEvent *)event;ui->label->move(e->x() - ui->label->width()/2, e->y() - ui->label->height()/2);return true;}return QWidget::event(event);
}

3、重寫(在對象上安裝)事件過濾器

事件過濾器目的是篩選出感興趣的控件上產(chǎn)生的感興趣的事件

bool QObject::eventFilter(QObject *watched, QEvent *event);

watched:感興趣的對象
event:事件

installEventFilter( const QOject *obj );

步驟

  • ①重寫eventFilter函數(shù)
  • ②將關(guān)注的控件加載到安裝到當(dāng)前類的過濾器中,installEventFilter(this);這樣在該控件上產(chǎn)生的任何事件都優(yōu)先調(diào)用eventFilter(),不會調(diào)用event()
bool Widget::eventFilter(QObject *watched, QEvent *event)
{//判斷該事件產(chǎn)生的對象是否感興趣的控件if(watched == ui->label_2){//再次判斷該控件上產(chǎn)生的事件是否為按興趣的事件if(event->type() == QMouseEvent::MouseButtonPress){QMouseEvent *e = (QMouseEvent *)event;if(e->button() == Qt::LeftButton){ui->label->setStyleSheet("background-color:#aa00ff;");qDebug()<<"LeftButton";}if(e->button() == Qt::MiddleButton){ui->label->setStyleSheet("background-color:#ff00ff;");qDebug()<<"MiddleButton";}if(e->button() == Qt::RightButton){ui->label->setStyleSheet("background-color:#dd000f;");qDebug()<<"RightButton";}return true;}/*該控件上不感興趣的事件,都忽略*return false;*該控件上的事件其他不該興趣的事件交給基類處理*return QWidget::eventFilter(watched, event);*/return QWidget::eventFilter(watched, event);}/**凡是不感興趣的控件上的事件,都交給基類來處理*return QWidget::eventFilter(watched, event);*/return QWidget::eventFilter(watched, event);
}

關(guān)于事件過濾器的返回值需要注意的三個(gè)點(diǎn)
①對該對象感興趣的事件執(zhí)行好后返回true,對該對象不感興趣的事件返回false(都忽略)
②對一個(gè)或幾個(gè)對象上的事件感興趣,其他不該興趣的事件交給基類的event()函數(shù)來處理,并返回的結(jié)果作為事件的處理結(jié)果

return QWidget::eventFilter(watched, event);

③凡是不感興趣的對象上的事件,也都交給基類來處理

return QWidget::eventFilter(watched, event);
http://www.risenshineclean.com/news/44368.html

相關(guān)文章:

  • 網(wǎng)站在工信部備案軟文案例400字
  • 電子商城網(wǎng)站建設(shè)seo網(wǎng)站優(yōu)化技術(shù)
  • wordpress 網(wǎng)站小模塊seo網(wǎng)站推廣什么意思
  • 外貿(mào)論壇有哪些平臺抖音seo搜索優(yōu)化
  • 漣水做網(wǎng)站二十個(gè)優(yōu)化
  • 北海做網(wǎng)站網(wǎng)站建設(shè)哪家好seo技術(shù)博客
  • 路由器做網(wǎng)站主機(jī)要備案嗎外鏈網(wǎng)
  • WordPress源碼帶會員中心系統(tǒng)排名優(yōu)化哪家專業(yè)
  • 無錫做網(wǎng)站品牌公司百度人工客服在線咨詢電話
  • 太原做網(wǎng)站的公司網(wǎng)站建設(shè)網(wǎng)絡(luò)推廣是以企業(yè)產(chǎn)品或服務(wù)
  • 網(wǎng)店運(yùn)營規(guī)劃如何優(yōu)化關(guān)鍵詞的排名
  • 淘寶做短視頻網(wǎng)站好鏈接買賣價(jià)格
  • 有誰做彩票網(wǎng)站嗎廊坊關(guān)鍵詞優(yōu)化報(bào)價(jià)
  • 聚合頁做的比較好的教育網(wǎng)站軟件定制開發(fā)
  • 網(wǎng)站做302跳轉(zhuǎn)的意義什么軟件可以找客戶資源
  • 商丘三合一網(wǎng)站建設(shè)廈門seo推廣優(yōu)化
  • 用舊電腦做網(wǎng)站推廣網(wǎng)站怎么制作
  • 個(gè)人網(wǎng)站備案信息北京網(wǎng)站制作推廣
  • 中信建設(shè)有限責(zé)任公司唐萬哩如何提高網(wǎng)站seo排名
  • 網(wǎng)站的功能和特色百度推廣是做什么的
  • 玉樹市公司網(wǎng)站建設(shè)seo搜外
  • 網(wǎng)站的原型怎么做百度搜索競價(jià)排名
  • 網(wǎng)站開發(fā)目錄結(jié)構(gòu)百度首頁排名怎么做到
  • 做ppt模板網(wǎng)站有哪些網(wǎng)站統(tǒng)計(jì)
  • 做自己網(wǎng)站彩票免費(fèi)站長工具
  • 寶安有效的網(wǎng)站制作站長域名查詢工具
  • python源碼分享網(wǎng)站百度客服24小時(shí)人工服務(wù)
  • wordpress消息系統(tǒng)滕州網(wǎng)站建設(shè)優(yōu)化
  • 淘寶開店網(wǎng)站怎么做網(wǎng)絡(luò)稿件投稿平臺
  • 可以做照片書的網(wǎng)站百度推廣入口