日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt实现浮动窗口

發(fā)布時(shí)間:2024/9/27 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt实现浮动窗口 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

提要

在窗口上懸浮鼠標(biāo),此時(shí)窗口標(biāo)題欄顯示,窗口變大,鼠標(biāo)移開后,窗口恢復(fù)原來的大小,標(biāo)題欄隱藏。

示例

直接上代碼,只包含只要的代碼部分。
在自定義的窗口中重寫鼠標(biāo)進(jìn)入事件enterEvent和鼠標(biāo)離開事件leaveEvent,在其內(nèi)部實(shí)現(xiàn)窗口的變大,恢復(fù)。
在構(gòu)造函數(shù)中將標(biāo)題欄隱藏。
ui->titleWidget為自定義標(biāo)題欄。

ui->titleWidget->hide(); //變量定義 QRect m_oldSizePos;//保存之前的窗口大小 bool m_isFloatWin;//是否有窗口浮動(dòng) #define BASE_W 1920//基本屏幕分辨率 #define BASE_H 1080 #define FLOATWIN_RANGE 800//懸浮窗口的區(qū)域?yàn)?00x800的矩形框內(nèi)呈現(xiàn)懸浮窗口//其中 m_percentW = (qreal)BASE_W / screen.width(); // m_percentH = (qreal)BASE_H / screen.height();為 //1920x1080與當(dāng)前屏幕分辨率的比值,void CustomWidget::enterEvent(QEvent *event) {ui->titleWidget->show();//標(biāo)題欄顯示//保存原來的窗口大小位置m_oldSizePos = geometry();//獲取窗口左上角坐標(biāo)(場(chǎng)景坐標(biāo))QRect rectWin = geometry();outPut<<"矩形的寬:"<<rectWin.width()<<"高:"<<rectWin.height()<<"x:"<<rectWin.x()<<"y:"<<rectWin.y();//求出窗口寬高的最大值int max = rectWin.width() > rectWin.height() ? rectWin.width():rectWin.height();//最大值是否小于浮動(dòng)窗口的區(qū)域,小于出現(xiàn)浮動(dòng)窗口,大于不需要出現(xiàn)浮動(dòng)窗口if(max < FLOATWIN_RANGE)//FLOATWIN_RANGE一個(gè)宏,值為700,可以自己設(shè){max = FLOATWIN_RANGE;//最長的邊為700int otherLen;//另一邊長if(rectWin.width() >= rectWin.height())//寬大與高{otherLen = (float)FLOATWIN_RANGE / rectWin.width() * rectWin.height();rectWin.setWidth(max);rectWin.setHeight(otherLen);}else//高大于寬{otherLen = (float)FLOATWIN_RANGE / rectWin.height() * rectWin.width();rectWin.setWidth(otherLen);rectWin.setHeight(max);}if(rectWin.x() + rectWin.width() > SCENE_W / m_percentW){rectWin.moveLeft(SCENE_W / m_percentW - rectWin.width());//setX會(huì)改變矩形的寬所以沒有使用}if(rectWin.y() + rectWin.height() > SCENE_H / m_percentH){rectWin.moveTop(SCENE_H /m_percentH - rectWin.height());//設(shè)置y值}setGeometry(rectWin);//設(shè)置變大后窗口的大小m_isFloatWin = true;outPut<<"矩形放大后寬:"<<rectWin.width()<<"高:"<<rectWin.height()<<"x:"<<rectWin.x()<<"y:"<<rectWin.y();} }void CustomWidget::leaveEvent(QEvent *event) {ui->titleWidget->hide();//隱藏標(biāo)題欄if(m_isFloatWin){//窗口恢復(fù)大小setGeometry(m_oldSizePos);//窗口恢復(fù)之前的大小outPut<<"矩形恢復(fù)之前的寬:"<<m_oldSizePos.width()<<"高:"<<m_oldSizePos.height()<<"x:"<<m_oldSizePos.x()<<"y:"<<m_oldSizePos.y();m_isFloatWin = false;} }

以上可以將原來的窗口在鼠標(biāo)懸浮時(shí)放大并顯示標(biāo)題欄,鼠標(biāo)移開窗口,窗口恢復(fù)之前的大小。

總結(jié)

以上是生活随笔為你收集整理的Qt实现浮动窗口的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。