首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Qt无法在小部件上绘制多个QRect

Qt是一款跨平台的C++应用程序开发框架,它提供了丰富的图形界面和功能库,可以用于开发各种类型的应用程序。在Qt中,可以使用QPainter类来进行绘图操作。

针对你提到的问题,Qt是可以在小部件上绘制多个QRect的。QRect是Qt中用于表示矩形的类,它包含了矩形的左上角坐标和宽高信息。可以通过QPainter的drawRect方法来在小部件上绘制一个或多个矩形。

下面是一个示例代码,演示了如何在一个小部件上绘制多个QRect:

代码语言:txt
复制
#include <QtWidgets>

class MyWidget : public QWidget {
public:
    MyWidget(QWidget *parent = nullptr) : QWidget(parent) {}

protected:
    void paintEvent(QPaintEvent *event) override {
        QPainter painter(this);
        painter.setPen(Qt::black);
        painter.setBrush(Qt::red);

        // 绘制多个矩形
        painter.drawRect(QRect(10, 10, 50, 50));
        painter.drawRect(QRect(70, 10, 50, 50));
        painter.drawRect(QRect(130, 10, 50, 50));
    }
};

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

    MyWidget widget;
    widget.show();

    return app.exec();
}

在上述代码中,我们创建了一个自定义的小部件MyWidget,并重写了其paintEvent方法。在paintEvent方法中,我们使用QPainter对象进行绘图操作,设置画笔颜色为黑色,画刷颜色为红色,然后通过drawRect方法绘制了三个不同位置和大小的矩形。

这只是一个简单的示例,你可以根据实际需求在小部件上绘制任意数量和形状的矩形。同时,Qt还提供了丰富的绘图功能和API,可以实现更复杂的绘图效果。

关于Qt的更多信息和使用方法,你可以参考腾讯云的Qt产品介绍页面:Qt产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

OpenCV3 和 Qt5 计算机视觉:1~5

在最基本的形式和形状中,“计算机视觉”是一个术语,用于标识用于使数字设备具有视觉感觉的所有方法和算法。 这意味着什么? 好吧,这就是听起来的确切含义。 理想情况下,计算机应该能够通过标准相机(或与此相关的任何其他类型的相机)的镜头看到世界,并且通过应用各种计算机视觉算法,它们应该能够检测甚至识别并计数人脸。 图像中的对象,检测视频馈送中的运动,然后执行更多操作,这些操作乍一看只能是人类的期望。 因此,要了解计算机视觉的真正含义,最好知道计算机视觉旨在开发方法以实现所提到的理想,使数字设备具有查看和理解周围环境的能力。 值得注意的是,大多数时间计算机视觉和图像处理可以互换使用(尽管对这个主题的历史研究可能证明应该相反)。 但是,尽管如此,在整本书中,我们仍将使用“计算机视觉”一词,因为它是当今计算机科学界中更为流行和广泛使用的术语,并且因为正如我们将在本章稍后看到的那样,“图像处理”是 OpenCV 库的模块,我们还将在本章的后续页面中介绍,并且还将在其完整的一章中介绍它。

02

Qt编写自定义控件67-通用无边框

在之前的一篇文章中写过一个通用的移动控件,作用就是用来传入任意的widget控件,可以在父类容器中自由移动。本篇文章要写的是一个通用的无边框类,确切的说这不叫控件应该叫组件才对,控件是要看得见的东西,有绘制需求的,而这个需要依附在控件上。在我们平时做的项目中,为了U界面的美观,很多会采用自定义无边框窗体来处理,自己美化标题栏等,都会面临一个相同的问题,就是设置好自定义无边框窗体以后,要自己处理窗体的移动和拉伸,如果有多个无边框窗体,很多人会想到每个地方都写重复的代码来实现移动或者拉伸,何不封装一个类来完成这个功能呢,直接传入窗体即可。在QDialog窗体中可以通过设置一个属性sizeGripEnabled来实现右下角的拉伸,这个还不足以满足所有的需求,很多时候我们还需要在四个角和上下左右都能拉伸大小,这个就需要重写了,安装事件过滤器,识别到鼠标移动到某个区域,鼠标形状自动变化,然后识别是否已经按下,按下的话做对应的处理,对应的处理核心就是重新设置窗体的XY轴坐标和大小。

02

Qt音视频开发44-实时人脸框

在人脸识别到以后,需要在实时视频上将所有人脸框绘制出来,一把来说识别人脸会有多种选择,一个是识别最大人脸,这种场景主要用于刷脸门禁,还有一种是识别所有人脸,这种场景主要用于人脸识别摄像机,就是将画面中的所有人脸识别出来发给服务器,人脸框的数据主要是四个参数,左上角和右下角的位置,也可以说是x、y、width、height,可能有些做的比较好的还有倾斜角度,这个意义不是很大,人脸识别的速度一般都是飞快的,就算你用学习上用的opencv做识别也是非常快的,基本上都是毫秒级的响应,主要的耗时操作在特征值的提取,所以一般要求能够响应每个通道每秒钟25帧-30帧的画面绘制+人脸框的绘制,当然人脸框的数据可能会有多个。

00

Qt编写自定义控件39-导航标签

在很多菜单导航界面中,当单击了二级菜单或者三级菜单以后,顶部会显示带箭头或者其他标识的导航标签,可以单击该标签快速切换到对应的界面,也作为指示当前处于哪一级菜单下的界面,主要在WEB中大肆流行,在CS架构的项目中也逐渐应用开来,发现现在越来越多的CS开发的程序,都学习和模仿并应用BS架构的程序中好的方面,尤其是UI方面,取长补短,挺好,专业UI设计师的美感比绝大多数程序员的美感要好很多,他们设计出来的效果都是非常棒的,我个人喜欢去UI中国参看学习各种各样的UI设计,看到好的会下载下来,直接搞个拾色器查看颜色,看下人家的颜色配色搭配的多好。

00

OpenCV3 和 Qt5 计算机视觉:6~10

它始终以未经处理的原始图像开始,这些图像是使用智能手机,网络摄像头,DSLR 相机,或者简而言之,是能够拍摄和记录图像数据的任何设备拍摄的。 但是,通常以清晰或模糊结束。 明亮,黑暗或平衡; 黑白或彩色; 以及同一图像数据的许多其他不同表示形式。 这可能是计算机视觉算法中的第一步(也是最重要的步骤之一),通常被称为图像处理(目前,让我们忘记一个事实,有时计算机视觉和图像处理可互换使用;这是历史专家的讨论。 当然,您可以在任何计算机视觉过程的中间或最后阶段进行图像处理,但是通常,用大多数现有设备记录的任何照片或视频首先都要经过某种图像处理算法。 这些算法中的某些仅用于转换图像格式,某些用于调整颜色,消除噪点,还有很多我们无法开始命名。 OpenCV 框架提供了大量功能来处理各种图像处理任务,例如图像过滤,几何变换,绘图,处理不同的色彩空间,图像直方图等,这将是本章的重点。

02
领券