對于普通的控件,我們通過樣式表(css)設定圓角就比較簡單
border-radius:5px
但是這個方法對于QDialog并沒有作用。經過仔細研究發現了。原來QDialog隻是一個容器,對于已經設定無邊框(Qt::FramelessWindowHint)的對話框,直接設定border-radius并沒有作用。
那怎麼辦呢?
我們可以在QDialog裡放置一個QFrame控件,所有的布局都在QFrame控件裡設定。然後設定QFrame控件的圓角就ok了
1.結構應該就是這樣子的。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczLcVmds92czlGZvwVP9EUTDZ0aRJkSwk0LcxGbpZ2LcBDM08CXlpXazRnbvZ2LcRlMMVDT2EWNvwFdu9mZvw1MBpmYoZFWl5WNyI2bwhlWwh2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TN1gDNwMTMyEjMwQDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
2.設定frame的樣式表
QFrame
{
background-color:#ffffff;
border:none;
border-radius:10px;
}
3.設定QDialog對話框的屬性:在dialog對話框的構造函數設定對話框背景透明
setWindowFlags(Qt::FramelessWindowHint | Qt::Tool);
setAttribute(Qt::WA_TranslucentBackground);
demo下載下傳位址:https://download.csdn.net/download/xiezhongyuan07/10322255