2012-02-21 23 views
2

我试图围绕当前小部件的角落,但它不工作,为什么?我怎样才能围绕QWidgets的角落?


PopupWindow::PopupWindow() : QWidget(0) { 
    setWindowFlags(
     Qt::Tool | 
     Qt::FramelessWindowHint | 
     Qt::WindowSystemMenuHint | 
     Qt::WindowStaysOnTopHint 
    ); 
    this->resize(300, 100); 
    setStyleSheet(".PopupWindow {border-style: outset;border-width: 10px;border-radius:10px;}"); 

    QPushButton *hello = new QPushButton("Hello world!"); 
    hello->setFont(QFont("Times", 18, QFont::Bold)); 
    hello->setGeometry(10, 40, 180, 40); 
    hello->setStyleSheet(""); 


    QVBoxLayout *layout = new QVBoxLayout; 
    layout->addWidget(hello); 
    setLayout(layout); 
} 

回答

2

border-radius不受QWidget的(border-styleborder-width是)的支持。检查出the documentation。不同的小部件支持CSS属性的不同子集。

+2

那么我该怎么做呢? – chacham15 2012-02-21 00:51:06

+1

这是一个窗口(而不是一个父窗口内的部件)?您需要禁用窗口框架,启用透明度,然后为具有圆角边框的窗口设置遮罩。我可能能够找到我多年前使用的代码来执行此操作... – Kitsune 2012-02-21 00:55:38

1

QFrame支持border-radius,您还可以在可由样式表配置的其他属性中设置背景色。

所以我认为设计中需要边界半径的部分可以是QFrame而不是QWidget。