qt中是否有范围为(0,0)的圆形QProgressbar?

2023-12-04

我希望有circular QProgressbar它的外观必须看起来像正常的QProgressbar范围在 0 到 0 之间。

线性代数的代码QProgressbar是像下面这样的东西:

QProgressBar *_progressBar = new QProgressBar();
_progressBar->setTextVisible(false);
_progressBar->setRange(0, 0);

enter image description here

但我希望它是圆形的。有没有办法在qt中实现呢?


有一天,我编写了一个简单的类来实现一个圆形进度条以达到我的目的(Qt 4.6)。您可以根据需要修改其外观。希望它会有所帮助。

加载.h

#pragma once

#include <QtGui>

class Loading : public QWidget {
    Q_OBJECT
public:
    explicit Loading(QWidget *parent);

protected:
    double current;
    bool eventFilter(QObject *obj, QEvent *ev);
    bool event(QEvent *);
    void paintEvent(QPaintEvent *);
    void timerEvent(QTimerEvent *);
};

加载.cpp

#include "loading.h"

/**
 * @brief Creates a circular loading
 * @param parent - non-NULL widget that will be contain a circular loading
 */
Loading::Loading(QWidget *parent) : QWidget(parent), current(0) {
    Q_ASSERT(parent);
    parent->installEventFilter(this);
    raise();
    setAttribute(Qt::WA_TranslucentBackground);
    startTimer(20);
}

bool Loading::eventFilter(QObject *obj, QEvent *ev) {
    if (obj == parent()) {
        if (ev->type() == QEvent::Resize) {
            QResizeEvent * rev = static_cast<QResizeEvent*>(ev);
            resize(rev->size());
        }
        else if (ev->type() == QEvent::ChildAdded)
            raise();
    }
    return QWidget::eventFilter(obj, ev);
}

bool Loading::event(QEvent *ev) {
    if (ev->type() == QEvent::ParentAboutToChange) {
        if (parent()) parent()->removeEventFilter(this);
    }
    else if (ev->type() == QEvent::ParentChange) {
        if (parent()) {
            parent()->installEventFilter(this);
            raise();
        }
    }
    return QWidget::event(ev);
}

void Loading::paintEvent(QPaintEvent *) {
    QPainter p(this);
    p.fillRect(rect(), QColor(100, 100, 100, 64));

    QPen pen;
    pen.setWidth(12);
    pen.setColor(QColor(0, 191, 255));  // DeepSkyBlue
    p.setPen(pen);

    p.setRenderHint(QPainter::Antialiasing);

    QRectF rectangle(width()/2 - 40.0, height()/2 - 40.0, 80.0, 80.0);

    int spanAngle = (int)(qMin(0.2, current) * 360 * -16);
    int startAngle = (int)(qMin(0.0, 0.2 - current) * 360 * 16);

    p.drawArc(rectangle, startAngle, spanAngle);
}

void Loading::timerEvent(QTimerEvent *) {
    if (isVisible()) {
        current += 0.03;
        if (current > 1.2) current = 0.2; // restart cycle
        update();
    }
}

Usage

#include "loading.h"

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
    QLabel w;
    w.setMinimumSize(400, 400);
    Loading *loading = new Loading(&w);
    QTimer::singleShot(4000, loading, SLOT(hide()));
    w.show();
    return a.exec();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

qt中是否有范围为(0,0)的圆形QProgressbar? 的相关文章

随机推荐

  • BitmapFactory.decodeStream 无法从 ftp 解码 png 类型

    我的错误是什么 如何显示来自 FTP 的 png 我是 android 新手 尝试显示来自不同连接 源的图像 然后我已经显示了从可绘制和 HTTP 加载的图像 现在 我尝试从 FTP 显示 当我使用时 我收到消息 解码器 gt 解码返回 f
  • MySQL 理解基本连接

    我正在努力理解基本的 MySQL 连接 基本上我有 2 个表 其中一个包含客户的名字和地址 ID 另一个包含实际地址 我希望它不只是显示客户名称和地址 ID 而是显示客户名称和实际地址 我的基本选择语句是这样的 SELECT firstNa
  • 使用 Retrofit 获得通用 URL 的任何方法

    我有几个接受相同 GET 参数的 URL 主要用于分页目的 如下所示 public interface AsynchronousApi GET api users public void listUsers Query limit Inte
  • 从jquery处理android中的后退按钮

    我们用 jQuery 开发了一个与 android 集成的应用程序 只有一个 Activity 从这个活动中 我们加载一个 HTML 文件 在这个文件上我们显示和隐藏 div 内容 查看此处提供的网页并按 android 中提供的后退按钮时
  • 在 FullCalendar 中显示周数

    我正在寻找一种在议程周视图上显示周数的方法 我试过了这个方法但没有结果 实际上 我需要像这样将数字放在日历标题中 titleFormat month Calendar br MMMM yyyy week Calendar br Week W
  • log_softmax() 如何实现以更快的速度和数值稳定性计算其值(和梯度)?

    MXNet 和 PyTorch 都提供了计算 log 的特殊实现 softmax 速度更快 数值更稳定 但是 我在这两个包中都找不到该函数 log softmax 的实际 Python 实现 谁能解释一下这是如何实现的 或者更好的是 给我指
  • 快速行插入 UITableView 会导致 NSInternalInconsistencyException

    我有一个 UITableView 有时会快速插入新行 新行的插入由通知观察者处理 该通知观察者监听每当基础数据发生更改时触发的更新通知 我在所有数据模型更改和实际通知发布本身周围使用 synchronized 块 希望每个增量数据更改 和行
  • 遍历已填充的行

    因此 我尝试使用 VBA 迭代 Excel 电子表格中的工作表 我想遍历每一行 然后遍历每一列 尽管进行了谷歌搜索 但我实际上无法找到一种直观的方法来做到这一点 我假设必须填充一行的第一个单元格 如果没有 那么那一定是结束 我可以强制执行这
  • 为什么我们必须在 C# 中同时定义 == 和 !=?

    C 编译器要求每当自定义类型定义运算符时 它还必须定义 see here Why 我很好奇为什么设计者认为有必要 以及为什么编译器不能在只有另一个运算符存在时默认为其中一个运算符提供合理的实现 例如 Lua 允许您仅定义相等运算符 而您可以
  • Javascript 正则表达式和边界

    一位同事问我一个正则表达式问题 我似乎无法找到并回答他 我们使用边界在文本编辑器中突出显示特定长度的文本 但这里有一些示例代码显示了该问题 问题是 第一个文字 str replace 有效
  • 如何在反应中显示表格中的对象数组

    最近在学习react 我将状态设置为对象数组 我想在页面上的表格中显示该数组 每个对象在一行上 我一直在研究地图 但是我在理解它时遇到了一些困难 我能够在代码中的不同位置很好地使用映射来映射array 但我在通过映射时遇到问题对象数组 此代
  • 如何使用 Google Visualization Query 搜索电子表格

    我有这个简单的网页它使用 google visualization Query 从中提取三个特定单元格的值电子表格 然后根据三个相应输入字段的唯一 id 属性设置其值 google load visualization 1 packages
  • 从子路由渲染的 Jade 模板链接到静态文件

    我在使用 Node js Express Jade 时遇到了一个非常基本的问题 该问题非常难以描述 在我的 node js 应用程序中 我使用 Express 框架来路由 HTTP 请求 我还使用 Jade 模板作为视图 它们本身链接到我通
  • 如何从数据库表中为用户添加地理位置标记?

    我想对每个用户进行地理定位 我在用户表中添加两个字段纬度和经度 这是我的地图页面map html
  • 使用索引向量重新排序向量[重复]

    这个问题在这里已经有答案了 我想对向量中的项目重新排序 使用另一个向量来指定顺序 char A a b c size t ORDER 1 0 2 vector
  • 从 android 活动返回值到片段

    我有片段 F 它调用活动 A 在活动 A 中按下按钮 B 时 活动必须将选定的数组列表值返回到片段 F 并完成活动 A 这可能吗 我从 Activity 知道您可以发送意图如下的数据 Bundle bundle new Bundle bun
  • GORM 阻止为域创建外键约束

    我正在 Grails 中开发一个基于 Web 的应用程序 我遇到过一种情况 我想尝试禁止 GORM 在表中的字段上创建外键约束 我有一个域类 它是类层次结构的一部分 域类本质上充当到目标域的链接 目标域可以是不同的类型 并且该链接域的每个子
  • 如何在新选项卡/窗口中打开每个 WordPress 帖子?

    我有一个wordpress博客的主页显示 10 篇最新帖子的列表 现在 每当我单击任何帖子标题时 都会在同一选项卡中打开一个新帖子 但在这里我想让它在新选项卡中打开 那么 我该怎么做呢 Wordpress 中的每个主题都有不同的模板 尝试寻
  • Unity3D 将 json 发布到 ASP.NET MVC 4 Web Api

    如何将 json 值发布到 ASP NET MVC 4 Web Api 控制器 我尝试了几种方法 但无法使其发挥作用 首先 我简化了控制器操作 HttpPost public Interaction Post Interaction fil
  • qt中是否有范围为(0,0)的圆形QProgressbar?

    我希望有circular QProgressbar它的外观必须看起来像正常的QProgressbar范围在 0 到 0 之间 线性代数的代码QProgressbar是像下面这样的东西 QProgressBar progressBar new