QT开发中文网

设置主窗口是圆角

要将Qt主窗口设置为圆角,可以结合使用样式表和无边框窗口标志。以下是一个示例,演示如何创建一个具有圆角效果的主窗口。

示例代码

#include <QApplication>
#include <QMainWindow>
#include <QPainter>

class RoundedWindow : public QMainWindow {
public:
    RoundedWindow(QWidget *parent = nullptr) : QMainWindow(parent) {
        setWindowFlags(Qt::FramelessWindowHint); // 去掉系统标题栏和边框
        setAttribute(Qt::WA_TranslucentBackground); // 设置背景透明(可选)
        
        // 设置窗口大小
        resize(400, 300);
    }

protected:
    void paintEvent(QPaintEvent *event) override {
        QPainter painter(this);
        painter.setRenderHint(QPainter::Antialiasing); // 启用抗锯齿
        
        // 设置绘制背景颜色和圆角半径
        QColor backgroundColor = QColor(255, 255, 255); // 白色背景
        int radius = 30; // 圆角半径

        painter.setBrush(backgroundColor);
        painter.setPen(Qt::NoPen);

        // 绘制带有圆角的矩形作为背景
        painter.drawRoundedRect(rect(), radius, radius);
        
        QMainWindow::paintEvent(event);
    }
};

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    RoundedWindow window;
    window.show();

    return app.exec();
}

说明

  1. 去掉边框:通过setWindowFlags(Qt::FramelessWindowHint)去除系统的标题栏和边框。
  2. 透明背景setAttribute(Qt::WA_TranslucentBackground)可以让你实现更加复杂的视觉效果,如果不需要透明背景,可以省略这一行。
  3. 绘制圆角:在paintEvent中使用QPainter来绘制一个带有圆角的矩形,使用drawRoundedRect()函数指定半径。

窗口操作

由于去掉了标题栏,你可能需要自己实现一些窗口操作,比如拖动、关闭等。下面是一个简单的例子,展示如何实现拖动:

private:
    bool dragging;
    QPoint lastPos;

void mousePressEvent(QMouseEvent *event) override {
    if (event->button() == Qt::LeftButton) {
        dragging = true;
        lastPos = event->pos();
    }
}

void mouseMoveEvent(QMouseEvent *event) override {
    if (dragging) {
        move(event->globalPos() - lastPos);
    }
}

void mouseReleaseEvent(QMouseEvent *event) override {
    if (event->button() == Qt::LeftButton) {
        dragging = false;
    }
}

这样你就可以创建一个可拖动的圆角窗口了!根据你的需求,你还可以添加其他功能,如最小化、最大化或关闭按钮。


内容由零声教学AI助手提供,问题来源于学员提问

目录导航
  • 示例代码
  • 说明
  • 窗口操作
  • 本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
    转载请注明出处:https://qt.0voice.com/?id=13421

    分享:
    扫描分享到社交APP
    上一篇
    下一篇
    发表列表
    游客 游客
    此处应有掌声~
    评论列表

    还没有评论,快来说点什么吧~

    联系我们

    在线咨询: 点击这里给我发消息

    微信号:3007537140

    上班时间: 10:30-22:30

    关注我们
    x

    注册

    已经有帐号?