1. 程式人生 > 實用技巧 >Qt實戰3.Qt仿Win10風格介面

Qt實戰3.Qt仿Win10風格介面

1 實現方式?

之前臨時做的一個介面Demo,支援全域性拖動,順便加了個單應用支援。由於本人開發使用QWidget居多,介面美化自然首選QSS,當然這需要一些QSS相關的知識,這裡不做探討。

QSS稱為Qt Style Sheets也就是Qt樣式表,它是Qt提供的一種用來自定義控制元件外觀的機制。

首先用設計師搭建骨架,化妝前的介面是這樣的:

是不是很醜?沒關係,用QSS化個淡妝,瞬間高大上,不化個妝敢上大街?

2 QSS一下

通過QSS對按鈕、介面進行美化,廢話不多說,直接上酸菜。

#Widget {
    border-style: solid;
    border-radius: 3;
    background-color: #142735;
}
#Widget QLabel {
    color: white;
    font-family: 微軟雅黑;
    font-size: 14px;
}

#Widget .QPushButton {
    width: 20px;
    height: 20px;
    qproperty-flat: true;
    margin-right: 4px;
    border: none;
}

#pushButtonLogo {
    border-image: url(:/images/log.png) 0 0 0 0 stretch stretch;
    min-width: 24px;
    min-height: 24px;
    max-width: 24px;
    max-height: 24px;
    qproperty-flat: true;
    font-family: 微軟雅黑;
}

QStackedWidget QPushButton {
    min-width: 100px;
    min-height: 45px;
    color: white;
    font-family: 微軟雅黑;
    font-size: 16px;
    border-style: solid;
    border-radius: 3;
}
QStackedWidget QPushButton:hover {
    color: white;
    background-color: #9061b3;
}
QStackedWidget QPushButton:checked {
    background-color: #9061b3;
    border-color: #555;
    color: white;
}
QStackedWidget #widgetContent {
    border: 1px solid lightgray;
}

QToolButton {
    min-width: 120px;
    min-height: 120px;
    max-width: 120px;
    max-height: 120px;
    color: white;
    font-family: 微軟雅黑;
    font-size: 16px;
    border-style: solid;
    border-radius: 3;
    background-color: #288ecc;
    icon-size: 64px;
}

QToolButton[class="CheckButton"] {
    min-width: 140px;
    min-height: 50px;
    max-width: 140px;
    max-height: 50px;
    color: white;
    font-family: 微軟雅黑;
    font-size: 16px;
    border-style: solid;
    border-radius: 3;
}

QToolButton:hover {
    background-color: #936eb4;
}

#pushButtonMenu {
    border-image: url(:/images/menu.png) 0 0 0 0 stretch stretch;
}

#pushButtonMenu:hover {
    border-image: url(:/images/menu-hover.png) 0 0 0 0 stretch stretch;
}

#pushButtonMinimize {
    border-image: url(:/images/minimize.png) 0 0 0 0 stretch stretch;
}

#pushButtonMinimize:hover {
    border-image: url(:/images/minimize-hover.png) 0 0 0 0 stretch stretch;
}

#pushButtonClose {
    border-image: url(:/images/close.png) 0 0 0 0 stretch stretch;
}

#pushButtonClose:hover {
    border-image: url(:/images/close-hover.png) 0 0 0 0 stretch stretch;
}

畫完淡妝後,介面漂亮不少,向萬人迷的目標邁進一大步。如果後期能夠再加入一些動畫效果,那會顯得更加專業。

3 總結

QSS使用簡單,很容易上手,熟悉CSS的朋友甚至直接就可以用。QSS本身其實還並不是最重要的,它只是一個工具,介面配色和圖示的搭配才是最核心的東西,就像使用同一支筆繪畫,大師畫出來的那叫作品,普通人畫出來的那叫練習作業。UI這個東西仁者見仁智者見智,對於非專業人士來說對一些優秀的介面進行仿照不失為一種良策。

4 下載

示例程式碼