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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

qt鼠标进入窗体后,窗体自动置顶

發布時間:2024/9/27 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qt鼠标进入窗体后,窗体自动置顶 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

提要

鼠標進入窗體后,窗體自動置頂,鼠標移開窗體后,窗體恢復之前的狀態。

示例

運行效果如下:
程序剛啟動的效果如下:

鼠標放在某一個窗口上的效果如下:

可實現鼠標放在某一個窗口上該窗口置頂,且窗口的標題欄顯示,移開鼠標后窗口恢復之前的大小,且標題欄隱藏。
項目的代碼結構如下:

下面附上實現的代碼。
widget.h

#ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include "widgetform.h"QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private:Ui::Widget *ui;widgetForm *m_childWidget1;//子窗口1widgetForm *m_childWidget2;//子窗口2 }; #endif // WIDGET_H

widget.cpp

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//創建窗口m_childWidget1 = new widgetForm(QRect(0,0,200,200),this);m_childWidget1->setWidgetBackground(QColor(0,170,255,255));m_childWidget1->show();m_childWidget2 = new widgetForm(QRect(150,20,300,300),this);m_childWidget2->setWidgetBackground(QColor(170,85,127,255));m_childWidget2->show(); }Widget::~Widget() {delete ui; }

widgetform.h

#ifndef WIDGETFORM_H #define WIDGETFORM_H#include <QWidget>namespace Ui { class widgetForm; }class widgetForm : public QWidget {Q_OBJECTpublic:explicit widgetForm(QRect rect, QWidget *parent = nullptr);~widgetForm();QRect getRect();//獲取窗口位置大小void setWidgetBackground(QColor color);//設置窗口的背景色 protected:void paintEvent(QPaintEvent *event);//繪制窗口背景色void enterEvent(QEvent *event);//鼠標進入窗口放大,標題欄顯示,窗口置頂void leaveEvent(QEvent *event);//鼠標離開窗口恢復 private:Ui::widgetForm *ui;QRect m_rect;//窗口位置大小QRect m_rectOld;//窗口原來的大小QColor m_color;//窗口背景顏色 };#endif // WIDGETFORM_H

widgetform.cpp

#include "widgetform.h" #include "ui_widgetform.h"widgetForm::widgetForm(QRect rect,QWidget *parent) :QWidget(parent),m_rect(rect),ui(new Ui::widgetForm) {ui->setupUi(this);setWindowFlags(Qt::FramelessWindowHint);ui->widgetTitile->hide();setGeometry(m_rect); }widgetForm::~widgetForm() {delete ui; }QRect widgetForm::getRect() {return m_rect; }void widgetForm::setWidgetBackground(QColor color) {m_color = color; }void widgetForm::paintEvent(QPaintEvent *event) {Q_UNUSED(event);QPalette pal = palette();pal.setColor(QPalette::Background,QColor(m_color));setAutoFillBackground(true);setPalette(pal);QWidget::paintEvent(event); }void widgetForm::enterEvent(QEvent *event) {ui->widgetTitile->show();m_rectOld = geometry();//獲取窗口原來的位置大小setGeometry(m_rectOld.x(),m_rectOld.y(),500,300);raise();//實現窗口置頂 }void widgetForm::leaveEvent(QEvent *event) {ui->widgetTitile->hide();setGeometry(m_rectOld); }

main.cpp

#include "widget.h"#include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); }

總結

以上是生活随笔為你收集整理的qt鼠标进入窗体后,窗体自动置顶的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。