qt 界面翻转特效_使用Qt实现超酷炫窗口特效

这篇博客展示了如何在Qt中创建一个具有按钮翻转特效的GUI应用。通过使用QGraphicsEffect类的子类,如QGraphicsDropShadowEffect,实现了按钮的阴影特效。作者创建了一个名为SwitchButtonWidget的UI,包含自定义的MyButton类,该类继承自QPushButton并能响应按键操作。通过控制焦点和样式表,实现了酷炫的窗口交互体验。
摘要由CSDN通过智能技术生成

Hello,大家好,今天给大家分享个比较有趣的小示例,按钮特效,具体效果如下图所示

 5c7e9df5dae4fc9383dbbbe78d444bd5.gif

下面,我们来看看它是如何实现的。

按钮特效,需要用到QWidget的方法:

void QWidget::setGraphicsEffect(QGraphicsEffect *effect)

QGraphicsEffect类是窗口特效的基类,基于该基类,Qt提供了四种便捷类: 

不加特效的正常图片

 605469276aa523cd7360c35ba3871adc.png

1 QGraphicsBlurEffect //模糊特效

 006b733b1919f3753c75c6217caf90fc.png

2 QGraphicsColorizeEffect //颜色特效 30904e3e089cd59734f0d879b96588cf.png

3 QGraphicsOpacityEffect //透明度特效 502f5c4a85a01c0729f0b4ab56e7da0e.png

4 QGraphicsDropShadowEffect //阴影特效5a0971175336fca6d0e22cac93b90242.png

示例中的按钮使用了阴影特效,其它特效用法类似。 

新建一个GUI工程,取名为SwitchButtonWidget ui界面为: c59e7fda8e9bd5f4777e9c7d86f1c381.png

按钮命名格式为“btn行号列号”,并且将这些QPushButton提升为MyButton,MyButton我们后面再定义。

使用这样的命名规则是为了当按下方向键(上下左右键)方便将焦点框切换到对应的按钮上

 6ffdcaf691be754763359093159ac07f.png

右键,修改样式表,修改窗口的样式为:

QPushButton {

border-radius: 4px;

border: none;

width: 35px;

height: 35px;

color: rgb(180, 0, 0);

font: bold 25px;

}

QPushButton:hover {

background: rgb(85, 85, 85);

}

QPushButton:pressed{

background: rgb(80, 80, 80);

}

QWidget {

border: 1px solid "#222222";

background-color: "#222222";

}

switchbuttonwidget.h

#ifndef SWITCHBUTTONWIDGET_H

#define SWITCHBUTTONWIDGET_H

#include <QtWidgets>

#include "controltable.h"

namespace Ui {

class SwitchButtonWidget;

}

class SwitchButtonWidget : public QWidget

{

Q_OBJECT

public:

explicit SwitchButtonWidget(QWidget *parent = 0);

~SwitchButtonWidget();

protected:

//重写实现按键事件

void keyPressEvent(QKeyEvent* e);

private:

void createTable();

private:

Ui::SwitchButtonWidget *ui;

ControlTable* table;

};

#endif // SWITCHBUTTONWIDGET_H

switchbuttonwidget.cpp

#include "switchbuttonwidget.h"

#include "ui_switchbuttonwidget.h"

SwitchButtonWidget::SwitchButtonWidget(QWidget *parent) :

QWidget(parent),

ui(new Ui::SwitchButtonWidget)

{

ui->setupUi(this);

createTable();

}

SwitchButtonWidget::~SwitchButtonWidget()

{

delete ui;

}

void SwitchButtonWidget::keyPressEve

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值