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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

qt浮动窗口

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

提要

鼠標(biāo)進(jìn)入窗口后,窗口放大,且出現(xiàn)標(biāo)題欄,鼠標(biāo)移開,窗口標(biāo)題欄隱藏,窗口還原。對于放大后超出顯示區(qū)域的窗口,將窗口進(jìn)行移動,使其在顯示區(qū)域內(nèi)。對于可以看清的窗口,只浮動顯示標(biāo)題欄,不進(jìn)行放大,默認(rèn)認(rèn)為窗口在700x700時可以看清。

示例

只展示關(guān)鍵代碼。

void CustomWidget::enterEvent(QEvent *event) {ui->titleWidget->show();//保存原來的窗口大小位置m_oldSizePos = geometry();//獲取窗口左上角坐標(biāo)(場景坐標(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();//最大值是否小于浮動窗口的區(qū)域700x700,小于出現(xiàn)浮動窗口,大于不需要出現(xiàn)浮動窗口if(max < FLOATWIN_RANGE){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){rectWin.moveLeft(SCENE_W - rectWin.width());//setX會改變矩形的寬}if(rectWin.y() + rectWin.height() > SCENE_H){rectWin.moveTop(SCENE_H - rectWin.height());}setGeometry(rectWin);m_isFloatWin = true;}outPut<<"矩形放大后寬:"<<rectWin.width()<<"高:"<<rectWin.height()<<"x:"<<rectWin.x()<<"y:"<<rectWin.y(); }void CustomWidget::leaveEvent(QEvent *event) {ui->titleWidget->hide();if(m_isFloatWin){//窗口恢復(fù)大小setGeometry(m_oldSizePos);outPut<<"矩形恢復(fù)之前的寬:"<<m_oldSizePos.width()<<"高:"<<m_oldSizePos.height()<<"x:"<<m_oldSizePos.x()<<"y:"<<m_oldSizePos.y();m_isFloatWin = false;} }

其中變量m_isFloatWin 初始化為false,其中enterEvent和leaveEvent為鼠標(biāo)進(jìn)入事件和鼠標(biāo)離開事件。FLOATWIN_RANGE為定義的宏700,出現(xiàn)的浮動窗口的范圍在700x700內(nèi),這樣就不用考慮過大的窗口,如何出現(xiàn)浮動窗口,以及顯示區(qū)域定義的長寬大于700后,不用考慮左上角坐標(biāo)出現(xiàn)在顯示區(qū)域外的情況,也屬于一種偷懶行為吧,但適用于我目前的項目,視情況而定了可酌情增刪代碼。

總結(jié)

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

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