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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

QSS 基础

發布時間:2023/12/14 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QSS 基础 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如果你會 CSS,那么 QSS 對你來說將會非常簡單,QSS 的語法和 CSS 的愈發非常相似,但也有些不同,有些 CSS 的東西在 QSS 里被去掉了,QSS 也加了些自己特有的東西,不過大多數還是差不多的,下面以修改 QLabel 的樣式為例,學習 QSS 的基礎語法。

QLabel {/* 相當于 font: bold 50px "Snell Roundhand"; */font-size: 50px;font-weight: bold;font-family: "Snell Roundhand";/* 文本的顏色 */color: white;/* 相當于 background: lightgray url(:/resources/horizontal-add-line.png); */background-color: lightgray;background-image: url(:/resources/horizontal-add-line.png);/* 還能使用漸變 */background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #FFFFFF, stop: 1 #BB000000);/* 相當于 border: 5px solid gray; */border-width: 5px;border-color: gray;border-style: solid;/* 邊框圓角 */border-radius: 10px;padding: 5px;margin: 10px; }

下圖是上面 QSS 的效果圖:

下面具體介紹一下 QSS 的基礎語法:

  • 設置字體用 font, 語法為:
font: [font-style] [font-variant] [font-weight] [font-size] [font-family]/* 按順序設置,可以忽略其中某些值,例如:*/ font: italic bold 12px arial, sans-serif;

設置字體用 font-style, font-size, font-weight, font-family(和 CSS 一樣,如果字體名字有空格則用雙引號引起來,多個字體名字間用逗號分隔,如果第一個字體找不到則用第二個,第二個找不到則用第三個,依此類推)

  • 設置文本顏色用 color
  • 設置背景顏色用 background-color
  • 設置背景使用 background,可以設置如下屬性:
  • background-color
  • background-position
  • background-size
  • background-repeat
  • background-origin
  • background-clip
  • background-attachment
  • background-image
/* 可以忽略其中某些值,例如:*/background: lightgray url(:/resources/horizontal-add-line.png);
  • url 中的路徑可以是:

    • 資源文件的路徑
    • 絕對路徑
    • 相對于可執行文件的相對路徑
  • 設置背景圖片用 background-image(先繪制背景色,然后再繪制背景圖片,如果背景圖片是半透明的就可以看到背景色了),默認水平和垂直重復平鋪滿整個 widget,同時一起設置的還可以有 background-repeat、background-position、background-attachment

  • background-repeat,可選的值有:

    • repeat-x:水平方向重復
    • epeat-y:垂直方向重復
    • no-repeat:不重復
  • background-position,可選的值有:

    • top left
    • top center
    • top right
    • center left
    • center center
    • center right
    • bottom left
    • bottom center
    • bottom right
    • xpos ypos
  • background-attachment,可選的值有:

    • scroll:背景隨滾動條滾動
    • fixed:背景不隨滾動條滾動
  • 設置背景還可以用 border-image,請參考 Border Image 一節

  • 設置邊框用 border-width, border-style, border-color

  • 設置邊框用 border,語法為:

border: border-width border-style border-color/* 例如:*/ border: 1px solid gray;
  • 設置圓角邊框用 border-radius,但是如果給定的半徑大于對應邊的一半,圓角就沒有效果了,在 CSS 里沒有這個問題
  • 支持漸變 gradient: qlineargradient、qradialgradient、qconicalgradient,漸變的坐標不是用像素表示,而是把漸變的坐標的最小值定義為 0,最大值定義為 1,這種技術又叫 Normalization,通俗點說就是用比例表示,開始處用 0 表示,結束處用 1 表示,不管漸變的范圍是 200px 還是 500px,按比例都能計算出實際的像素坐標,這樣做的好處是,不需要關心漸變的像素坐標范圍的具體數值。如果不用 Normalization 技術,widget 的大小一變化,就需要修改 QSS 里的坐標值。
/* x1: 0, y1: 0,漸變的開始位置,為 border rectangle 的左上角(請參考盒子模型) x2: 0, y2: 1,漸變的開始位置,為 border rectangle 的左下角 stop: 0.1 #FF0000,在 0.0 處漸變的顏色為 #FF0000 stop: 0.6 #00FF00,在 0.6 處漸變的顏色為 #00FF00 stop: 1.0 #0000FF,在 1.0 處漸變的顏色為 #0000FF */ background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0.1 #FF0000,stop: 0.6 #00FF00,stop: 1.0 #0000FF);

漸變效果比較復雜,可以使用 Qt Desginer 的 QSS 編輯器來幫助我們可視化的實現復雜的漸變效果,如下圖:

  • Padding 和 margin 參考盒子模型一節
  • 設置圖標,如 QToolButton 的圖標:
/* 圖標大小 */ icon-size: 20px 20px;/* 圖標文件 */ qproperty-icon: url(:/resources/tabset-left.png);
  • 設置寬度用 width,高度用 height,設置 subcontrol 的時候比較有用
  • 設置最小寬度用 min-width,最小高度用 min-height(是 content rectangle 的寬和高)
  • 設置最大寬度用 max-width,最大高度用 max-height
  • 遺憾的是,QSS 不支持陰影
  • 使用 qproperty-xxx 進行設置,因為在 QWidget 及其子類中使用宏 Q_PROPERTY 定義的 WRITE 函數可以在 QSS 中訪問:
    • text-align 不支持 QLable,但設置 QLabel 的文本居中可以這樣:qproperty-alignment: AlignCenter
    • 甚至可以在 QSS 中設置 QLabel,QPushButton 等的文本:qproperty-text: 'It is amazing',太魔性了
    • 設置 QLabel 的 word wrap: qproperty-wordWrap: true
    • 設置對齊方式:
      • qproperty-alignment: 'AlignCenter's
      • qproperty-alignment: 'AlignBottom | AlignRight'
    • 設置按鈕:
      • 設置 flat: qproperty-flat: true
      • 設置圖標: qproperty-icon: url(:/resources/tabset-left.png)
    • QWidget 及其子類還有很多 Q_PROPERTY 定義的 WRITE 函數,想知道就去查幫助文檔吧
    • 我們也可以使用宏 Q_PROPERTY 定義自己的 WRITE 函數,然后在 QSS 中使用
    • 不過 qproperty-xxx 也不是萬能的,在 :hover, :pressed 等偽類選擇器中不生效

上面的 QSS 的雖然只是基礎,但是很重要,大多數的時候都要用到它們,用來修改 QLabel,QPushButton,QFrame,QWidget 等的樣式還基本夠用了,不過如果要修改復雜一點的 widget 的樣式,如 QSpinBox,QScrollBar 等,上面的知識是不夠的,要想掌握好 QSS,還必須了解 QSS 的選擇器,盒子模型,Border-Image,Subcontrol 等,這些在后面都有專門的章節介紹。

QWidget 等的樣式還基本夠用了,不過如果要修改復雜一點的 widget 的樣式,如 QSpinBox,QScrollBar 等,上面的知識是不夠的,要想掌握好 QSS,還必須了解 QSS 的選擇器,盒子模型,Border-Image,Subcontrol 等,這些在后面都有專門的章節介紹。

原文地址:https://qtdebug.com/qtbook-qss-base/ 博主狗哥的其他博文也寫的非常好,從他這里學到了很多,需要的同學可以去看看https://qtdebug.com/qtbook/

總結

以上是生活随笔為你收集整理的QSS 基础的全部內容,希望文章能夠幫你解決所遇到的問題。

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