Qt 制作圆弧型提示框QDialog

直接附上效果图

在这里插入图片描述

满足以下条件

1、在QDialog窗口代码中添加以下语句:

 setWindowFlags(Qt::FramelessWindowHint);//取消标题栏
 setAttribute(Qt::WA_TranslucentBackground);//使透明效果生效

2、如果你该程序是在嵌入式端运行的话,需要有GPU,然后在运行的时候执行在EGLFS模式下,这样圆弧形提示框才生效,否者setAttribute(Qt::WA_TranslucentBackground);指令不生效。

代码实例

statement::statement(QDialog *parent)
    : QDialog(parent)
{
    initUi();
}
void statement::initUi()
{
    this->resize(480,260);
    this->setObjectName("stateObject");
    setWindowFlags(Qt::FramelessWindowHint);
    setAttribute(Qt::WA_TranslucentBackground);
    QLabel *tilteLabel = new QLabel("相关信息");
    QLabel *cpuLabel = new QLabel("CPU:xxxxxxx");
    QLabel *ubootLabel = new QLabel("uboot:2016.01");
    QLabel *kernelLabel = new QLabel("kernel版本:xxxxx");
    QLabel *authorLabel =new QLabel("作者:HYB");
    QLabel *appLabel = new QLabel("程序版本:1.0.3");
    QLabel *netLabel =new QLabel("了解更多:https://blog.csdn.net/qq_45147279");
    QLabel *nameLabel = new QLabel("@Qt学习专栏");
    QWidget *infoFrame = new QWidget;
    infoFrame->setObjectName("infoFrame");
    QPushButton *retBtn = new QPushButton(this);
    retBtn->setFocusPolicy(Qt::NoFocus);
    retBtn->setStyleSheet("background-color: #2e2e2e;border:none;");
    retBtn->setIcon(QIcon(":/pic/maindesktop/Retlogo.png"));
    retBtn->setIconSize(QSize(40,40));
    QHBoxLayout *hLayout = new QHBoxLayout;
    QSpacerItem *hSpacer2 = new QSpacerItem(60, 1280,
                                            QSizePolicy::Expanding,
                                            QSizePolicy::Maximum);

    hLayout->addSpacerItem(hSpacer2);
    hLayout->addWidget(retBtn);
    QVBoxLayout *infoLayout = new QVBoxLayout;
    infoLayout->addWidget(cpuLabel,1);
    infoLayout->addWidget(ubootLabel,1);
    infoLayout->addWidget(kernelLabel,1);
    infoLayout->addWidget(authorLabel,1);
    infoLayout->addWidget(appLabel,1);
    infoLayout->addWidget(netLabel,1);
    infoLayout->addSpacing(10);
    infoLayout->addWidget(nameLabel,2);
    infoFrame->setLayout(infoLayout);
    QVBoxLayout *vLayout = new QVBoxLayout;
    vLayout->addWidget(tilteLabel,1);
    vLayout->addWidget(infoFrame,6);
    vLayout->addLayout(hLayout,1);
    vLayout->setContentsMargins(40,40,30,10);
    QWidget *frame = new QWidget;
    frame->setObjectName("externframe");
    frame->setLayout(vLayout);
    QVBoxLayout *vLayout1 = new QVBoxLayout;
    vLayout1->addWidget(frame);
    vLayout1->setMargin(0);
    this->setLayout(vLayout1);

    connect(retBtn, &QPushButton::clicked,[=]{this->close();});
}
#qss样式
QWidget#infoFrame{
     background: #16181c;
     border-radius:20;
}
QWidget#externframe{
     background: #2f2f2f;
     border-radius:20;
     border: solid 5px #ffffff;
}

实用例程

上一章节:Qt中自定义提示框messageBox

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赟赟、嵌入式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值