1. 程式人生 > >Qt自定義無邊框Widget、Dialog、MessageBox

Qt自定義無邊框Widget、Dialog、MessageBox

  如果需要做出更漂亮的窗體介面,那麼實現無邊框的widget是非常有必要的。本文就實現了無邊框的widget、Dialog、MessageBox等一些常用的控制元件,進行了一些美化,可以拖動、縮放、雙擊標題欄最大化還原等操作,並且能夠實現windwos下的Aero效果,並封裝成庫,這樣用在每個專案都會很方便。
  先看下效果圖:
這裡寫圖片描述

注意:該庫是在 Windows+MingW 的環境下編譯的。

使用方法:

1、FramelessWindow:

#include "framelesswindow.h"
#include <QWidget>
#include <QApplication>
int main(int argc, char *argv[]) { QApplication a(argc, argv); FramelessWindow *pWindow = new FramelessWindow(); QWidget *pCentralWidget = new QWidget(pWindow); pWindow->setCentralWidget(pCentralWidget); pWindow->show(); return a.exec(); }

2、FramlessDialog

...
FramelessDialog *pDialog = new FramelessDialog(pWindow);
QWidget *pDlgCentralWidget = new QWidget(pDialog);
QPushButton *pButton = new QPushButton(pDlgCentralWidget);
pDialog->setCentralWidget(pDlgCentralWidget);
pDialog->setModal(true);
pDialog->show();
...

3、FrameMessageBox

FramelessMessageBox::showInformation(pWindow, QObject::tr("提示!"), QObject::tr("自定義提示框!"));

其中的各個配色可以在qss檔案中修改。

/**
 * 自定義無邊框窗體、對話方塊和提示框並封裝成庫/測試程式
 *
 * style.qss
 * qss全域性檔案,設定介面的配色主題等。
 *
 * FlyWM_
 * GitHub: https://github.com/FlyWM
 * CSDN: https://blog.csdn.net/a844651990
 *
 */
/********** 無邊框主窗體 **********/ FramelessWindow#framelessWindow { background-color: #323232; } /********************************/ /*********** 標題欄 **************/ QPushButton#minimizeButton { border: none; image: url(:/images/minimizeBtnWhite_16.png); } QPushButton#minimizeButton:hover { background: #505050; } QPushButton#maximizeButton { border: none; image: url(:/images/restoreWhite_16.png); } QPushButton#maximizeButton:hover { background: #505050; } QPushButton#maximizeButton[maximizeProperty=restore] { image: url(:/images/restoreWhite_16.png); } QPushButton#maximizeButton[maximizeProperty=maximize] { image: url(:/images/maximizeBtnWhite_16.png); } QPushButton#closeButton { border: none; image: url(:/images/closeBtnWhite_16.png); } QPushButton#closeButton:hover { background: #505050; } QPushButton#minimizeButton:pressed { background: #C8C8C8; image: url(:/images/minimizeBtnBlack_16.png); } QPushButton#maximizeButton:pressed { background: #C8C8C8; image: url(:/images/restoreBlack_16.png); } QPushButton#closeButton:pressed { background: #C8C8C8; image: url(:/images/closeBtnBlack_16.png); } QLabel#titleLabel { color: white; } /********************************/ /******* 自定義無邊框提示框 *******/ FramelessMessageBox#framelessMessagBox { background-color: #404040; } QLabel#messageTextLabel { color: white; font-family: "Microsoft Yahei"; font-size: 14pt; } QPushButton#yesButton { background-color: red; } /********************************/ /******* 自定義無邊框對話方塊 *******/ FramelessDialog#framelessDialog { background-color: #2E2E2E; } /********************************/

程式碼下載: