qt widget边倒角
时间: 2024-11-02 08:07:33 浏览: 20
在Qt中,如果你想要为QWidget或其子类添加边角(也称为圆角),你可以使用`setWindowShape()`函数结合`QRegion`或者`QPainterPath`来实现。以下是一个简单的例子:
```cpp
#include <QApplication>
#include <QWidget>
#include <QPainter>
#include <QRegion>
class RoundedWidget : public QWidget {
public:
RoundedWidget(QWidget *parent = nullptr) : QWidget(parent) {
setWindowFlags(windowFlags() | Qt::FramelessWindowHint); // 去除边框以便自定义形状
// 创建一个半径为5像素的圆形区域
QPainterPath path;
path.addRoundedRect(rect(), 5, 5);
QRegion region(path);
setMask(region); // 设置窗口形状为这个区域
}
private slots:
void paintEvent(QPaintEvent *) override {
QPainter painter(this);
// ... (在这里画背景或其他内容)
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
RoundedWidget widget;
widget.resize(300, 300);
widget.show();
return app.exec();
}
```
在这个例子中,我们创建了一个继承自QWidget的新类`RoundedWidget`,设置了窗口无边框,然后用`QPainterPath`生成了一个带有圆角的矩形区域,并将其设置为窗口的mask(即显示区域)。`paintEvent()`会被调用来处理窗口的内容绘制。
如果你想让边角更加灵活,可以根据需要调整`addRoundedRect()`中的参数,如改变半径大小。
阅读全文