Qt開源作品24 遮罩層窗體

2022-01-29 07:07:13 字數 1156 閱讀 5244

在有些專案中,需要在彈框的窗體背後遮罩原有主窗體,使得突出顯示彈窗窗體,突然想到之前寫過乙個全域性截圖的東東,原理一致,拿來改改。只需要引入乙個標頭檔案和實現檔案,然後在主窗體中設定下需要遮罩的主窗體和可能彈窗窗體的類名即可,就是如此簡單。可以支援多個窗體列表。

原理很簡單,先安裝事件過濾器,攔截qevent::show事件,拿到當前窗體,如果在需要遮罩的窗體列表中,則彈出半透明的窗體,大小和彈出的窗體大小一致,然後在啟用當前彈出的窗體。

//使用方法

//第一步,設定需要遮罩的父窗體

maskwidget::instance()->setmainwidget(this);

//第二步,設定哪些彈窗窗體需要被遮罩

qstringlist dialognames;

dialognames << "frm1" << "frm2";

maskwidget::instance()->setdialognames(dialognames);

//核心**

void maskwidget::setdialognames(const qstringlist &dialognames)

}void maskwidget::setopacity(double opacity)

void maskwidget::setbgcolor(const qcolor &bgcolor)

void maskwidget::showevent(qshowevent *)

}bool maskwidget::eventfilter(qobject *obj, qevent *event)

} else if (event->type() == qevent::hide)

} else if (event->type() == qevent::windowactivate) }}

}return qobject::eventfilter(obj, event);

}

本開源專案已經成功公升級到v2.0版本,分門別類,**並茂,保你爽到爆。

qt開源武林秘籍開發經驗,看完學完,20k起薪,沒有找我!

國內站點:

國際站點:

開源秘籍:

個人主頁:

知乎主頁:

Qt開源作品8 通用控制項移動

在做一些專案的過程中,有一種應用場景是需要拖動裝置在乙個容器中,自由拖動擺放到合適的位置,然後儲存對應裝置的座標位置資訊,在軟體啟動好以後自動載入配置好的座標位置資訊,將每個裝置移動到對應的位置,最好背景圖在來個3d鳥瞰圖,或者來點三維實景,搞得很炫。這就是這個控制項的來由,還有一種場景比如組態軟體...

Qt開源作品35 秘鑰生成器

在很多商業軟體中,需要提供一些可以試執行的版本,這樣就需要配套金鑰機制來控制,縱觀大部分的試用版軟體,基本上採用以下幾種機制來控制。qstring frmmain getwmic const qstring cmd qstring frmmain getcpuname qstring frmmain...

Qt開源作品35 秘鑰生成器

在很多商業軟體中,需要提供一些可以試執行的版本,這樣就需要配套金鑰機制來控制,縱觀大部分的試用版軟體,基本上採用以下幾種機制來控制。qstring frmmain getwmic const qstring cmd qstring frmmain getcpuname qstring frmmain...