Qt 不规则窗口,不规则按钮,不规划控件 不规则界面

这篇具有很好参考价值的文章主要介绍了Qt 不规则窗口,不规则按钮,不规划控件 不规则界面。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

有一些特殊情况,需要使用不规则窗口或按钮,看起来非常炫酷。

类似:

qt 不规则按钮,QT,qt,ui

Qt 实现 不规则样式设置,不是视觉欺骗,是真正的不规则 ,点击外面不会触发按钮的点击信号.

Part1:不规则窗口

效果:

qt 不规则按钮,QT,qt,ui

显示成一张图片中的图形,使用带有透明区域的png图片;

#include "widget.h"
#include "ui_widget.h"
#include <QStyleOption>
#include <QPainter>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    this->resize(100,100);
    setWindowOpacity(1);
    setWindowFlags(Qt::FramelessWindowHint);
    setAttribute(Qt::WA_TranslucentBackground);
 //   this->setStyleSheet("background-image: url(:/planning.png)");
    mQPixmap.load(":/planning.png");
    this->resize(mQPixmap.size());
}

Widget::~Widget()
{
    delete ui;
}
void Widget::paintEvent(QPaintEvent *e)
{
    QPainter painter(this);
    painter.drawPixmap(0,0,mQPixmap);
}

这里注意:

 必须重新绘制,构造函数也一定要调用resize。

见视频,可见,点击到空白处,消失;可见实现了真正的不规则界面;

不规则窗口

另一种方式实现,通过 setStyleSheet 这种方式用于 Button较多;

#include "widget.h"
#include "ui_widget.h"
#include <QStyleOption>

#include <QPainter>
#include <QStyleOption>
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    this->resize(100,100);
    setWindowOpacity(1);
    setWindowFlags(Qt::FramelessWindowHint);
    setAttribute(Qt::WA_TranslucentBackground);
    this->setStyleSheet("background-image: url(:/planning.png)");
}

Widget::~Widget()
{
    delete ui;
}

void Widget::paintEvent(QPaintEvent *e)
{
    QStyleOption opt;
    opt.initFrom(this);
    QPainter p(this);
    style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
    QWidget::paintEvent(e);
}

注意:

 this->resize(100,100); //实际图片大小,否则会变成填充;

效果:

qt 不规则按钮,QT,qt,ui

 Part2 : 按钮 实现

    QPixmap pix;
        pix.load(":/planning-hov.png");
        ui->pushButton->setFixedSize(pix.size());
        ui->pushButton->setMask(pix.mask());
        ui->pushButton->setStyleSheet("background-image: url(:/planning-hov.png)");

qt 不规则按钮,QT,qt,ui

效果,只有点击到有色图,才会有点击信号;实现了,按钮和图像一致;

使用明显些的图片 这个,

maskbutton.png

qt 不规则按钮,QT,qt,ui

 

qt 不规则按钮,QT,qt,ui

 

另外一种方式实现,重写按钮类;文章来源地址https://www.toymoban.com/news/detail-706996.html

到了这里,关于Qt 不规则窗口,不规则按钮,不规划控件 不规则界面的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Cocos Creator实现不规则区域点击

    在CocosCreator中,点击图片透明区域依然触发节点的点击事件。但在web开发中,可以使用Inkscape、SvgPathEditor等矢量图编辑器转为SVG,或者直接从figma中导出SVG,然后监听不规则图形事件。 以地图边界高亮为例:html 类似地图的不规则图形事件处理 但Cocos Creator中Sprite目前支持的格

    2024年02月06日
    浏览(36)
  • Elasticsearch不规则多边形区域查询

    定义ES连接类 其中self.es = Elasticsearch(hosts=self.host.split(‘,’), port=self.port)中,hosts参数接收的是一个字符串列表,例如[‘192.168.16.96’,‘192.168.16.97’,‘192.168.16.98’]等,端口是9200 创建一个带有geo_shape字段类型的索引。(仅执行一次) 插入一条数据以后 可以利用 来检查location字

    2024年02月12日
    浏览(31)
  • ArcGIS Pro如何制作不规则形状图例

    在默认的情况下,ArcGIS Pro生成的图例是标准的点、直线和矩形的,对于湖泊等要素而言,这样的表示方式不够直观,我们可以将其优化一下,制作不规则的线和面来代替原有图例,这里为大家介绍一下制作方法,希望能对你有所帮助。 在符号系统内,将水系的样式调整为我

    2024年02月12日
    浏览(34)
  • 折线的可视化及不规则柱体的绘制

    开发环境: Windows 11 家庭中文版 Microsoft Visual Studio Community 2019 VTK-9.3.0.rc0 vtk-example demo解决问题 : 1.绘制一条多段线(折现),并可视化这段折现;2.根据折现绘制一个不规则柱体 关键点 : vtkRotationalExtrusionFilter是Visualization Toolkit(VTK)中的一个过滤器,用于沿着输入曲线生成

    2024年01月25日
    浏览(30)
  • ospf不规则区域划分和数据库表

    图示 图示 在一台运行ospf的路由器上如果存在多个ospf进程时,如果不进行多进程双向重发布的话,不同进程中宣告的路由是不会进行共享的。 在合法ABR与与非合法ABR之间建立tunnel隧道,然后将tunnel隧道宣告于ospf协议中 缺点: 1.周期更新和触发更新信息对中间穿越区域造成资

    2024年02月11日
    浏览(30)
  • AD软件绘制不规则焊盘的器件封装

           网上有很多关于AD软件绘制不规则焊盘的帖子,搜了一些帖子看了一下,感觉不太对。严格意义上AD软件是不能绘制不规则的焊盘的,至少目前用的AD软件不支持。为什么这么说呢?    我提一个需求:假如我在PCB文件中需要随意的添加一个边长1mm的正三角形的焊盘。

    2023年04月08日
    浏览(35)
  • c# opencv 根据颜色得到不规则区域中的point

    其中,用到了opencv的函数: 1.  Cv2.CvtColor    颜色转换函数,将RGB颜色向HSV,HSI等颜色空间转换。本段代码是转成HSV 2.  Cv2.InRange    用于选出指定颜色范围的区域。如果满足指定的范围,则这个像素点的值被置为255(白色),否则值被置为0(黑色)。本段代码的颜色区间是

    2024年02月12日
    浏览(27)
  • 图像中不规则物体的长轴与短轴:OpenCV实现指南

    1.首先,读取图像并将其转换为灰度图像。 2.进行图像预处理,包括使用高斯模糊和阈值化,以便更好地处理图像。 3.通过使用OpenCV的cv2.findContours()函数,找到图像中的所有轮廓。 4.遍历所有轮廓,如果轮廓点的数量大于等于5个,则将这个轮廓拟合为一个椭圆。 5.如果成功拟

    2024年02月15日
    浏览(34)
  • Open3D 不规则点云体积计算 (15)

    黑暗笼罩万物,我将是黑暗中最后的那道曙光,以雷霆,击碎黑暗!!! 点云往往是不规则的,利用别的包围盒方法获取的体积可能不太准确,如果希望获取更准确的体积,这里介绍一种基于体素划分的体积计算方法,随着体素分辨率设置的尺寸减小,其计算的体积准确率越

    2024年02月02日
    浏览(30)
  • 如何用 Polygon Collider 2D 快速给2D不规则物体添加碰撞框

           众所周知,我们在写项目的时候 大部分时间我们遇到的是不规则的碰撞框,那么这个不规则的碰撞框是怎么实现?         其实unity 自带了一个可以自己制作碰框体大小的组件,这个组件就是Polygon Collider 2D .,会发现可为碰撞可为触发,有偏移量等      怎么去使用

    2024年02月15日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包