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

QPainter在QScrollArea中绘制线条

QPainter是Qt框架中的一个绘图类,用于在QWidget及其子类上进行绘图操作。QScrollArea是Qt提供的一个可滚动的窗口部件,可以在其中放置其他的QWidget。

要在QScrollArea中绘制线条,可以通过以下步骤实现:

  1. 创建一个继承自QWidget的自定义窗口部件,命名为CustomWidget。
  2. 在CustomWidget的构造函数中,设置其大小和背景颜色等属性。
  3. 重写CustomWidget的paintEvent()函数,在该函数中使用QPainter绘制线条。
  4. 在主窗口中创建一个QScrollArea部件,命名为scrollArea。
  5. 创建一个CustomWidget实例,命名为customWidget。
  6. 将customWidget设置为scrollArea的子部件,使用setWidget()函数。
  7. 将scrollArea设置为主窗口的中心部件,使用setCentralWidget()函数。

以下是一个示例代码:

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

class CustomWidget : public QWidget {
public:
    CustomWidget(QWidget *parent = nullptr) : QWidget(parent) {
        setFixedSize(400, 300);
        setAutoFillBackground(true);
        setPalette(QPalette(Qt::white));
    }

protected:
    void paintEvent(QPaintEvent *event) override {
        QPainter painter(this);
        painter.setPen(Qt::black);
        painter.drawLine(50, 50, 350, 250);
    }
};

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

    QMainWindow mainWindow;
    QScrollArea scrollArea(&mainWindow);
    CustomWidget customWidget;

    scrollArea.setWidget(&customWidget);
    mainWindow.setCentralWidget(&scrollArea);
    mainWindow.show();

    return app.exec();
}

在上述示例代码中,我们创建了一个CustomWidget类作为自定义窗口部件,并在其paintEvent()函数中使用QPainter绘制了一条线条。然后,我们创建了一个QScrollArea部件,并将CustomWidget设置为其子部件。最后,将scrollArea设置为主窗口的中心部件,以便显示。

这样,当程序运行时,就会在QScrollArea中绘制一条线条。

腾讯云相关产品和产品介绍链接地址:

请注意,以上仅为腾讯云的部分产品,更多产品和详细信息请参考腾讯云官方网站。

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

相关·内容

Qt编写自定义控件64-垂直时间轴

一、前言 垂直时间轴控件,主要用来描述企业发展历程大事件,或者软件版本迭代历史等,通过时间节点和事件描述来直观的展示发展的过程,一般web网页或者app中经常看到此类控件,尤其是公司的官网关于公司部分...,本控件的主要难点在于自动计算和排列来绘制时间和事件描述,默认采用对等分的机制来处理绘制,还有部分时间轴控件是左侧时间右侧事件描述,这个可以源码基础上自行更改或者增加样式,为了能够展示所有的事件,本控件主体是继承自滚动条区域控件...全部纯Qt编写,QWidget+QPainter绘制,支持Qt4.6到Qt5.13的任何Qt版本,支持mingw、msvc、gcc等编译器,支持任意操作系统比如windows+linux+mac+嵌入式...linux等,不乱码,可直接集成到Qt Creator,和自带的控件一样使用,大部分效果只要设置几个属性即可,极为方便。...所有控件最后生成一个动态库文件(dll或者so等),可以直接集成到qtcreator拖曳设计使用。 目前已经有qml版本,后期会考虑出pyqt版本,如果用户需求量很大的话。

1.3K20

问与答60: 怎样使用矩阵数据工作表绘制线条

连接的过程,遇到0不连接,如果两个要连接的数值之间有其他数,则从这些数值上直接跨过。如图1所示,连接的顺序是1-2-3-4-5-6-7-8-9-10-11-12-13。...A:VBA代码如下: 'Excel中使用VBA连接单元格的整数 '输入: 根据实际修改rangeIN和rangeOUT变量 ' rangeIN - 包括数字矩阵的单元格区域 '...Dim arrRange() As Variant Set rangeIN= Range("B3:E6") Set rangeOUT = Range("H3") '删除工作表绘制的形状...DeleteArrows ReDim arrRange(0) '一维数组存储单元格区域中所有大于0的整数 For Each cell In rangeIN...MyArray(i) MyArray(i) = Temp End If Next j Next i End Sub '从一个单元格中心绘制到另一个单元格中心的线条

2.5K30
  • Qt编写自定义控件45-柱状标尺控件

    由于当时的qpainter绘制功底还不够如火纯情,所以当时的刻度尺部分都是定死的字体大小,并不会随着控件变化而增大。...二、实现的功能 1:可设置精确度(小数点后几位)和间距 2:可设置背景色/柱状颜色/线条颜色 3:可设置长线条步长及短线条步长 4:可启用动画及设置动画步长 5:可设置范围值 6:支持负数刻度值 三、效果图...); //绘制背景 drawBg(&painter); //绘制标尺 drawRuler(&painter); //绘制柱状背景 drawBarBg(&...painter); //绘制柱状 drawBar(&painter); } void RulerBar::drawBg(QPainter *painter) { painter...全部纯Qt编写,QWidget+QPainter绘制,支持Qt4.6到Qt5.12的任何Qt版本,支持mingw、msvc、gcc等编译器,支持任意操作系统比如windows+linux+mac+嵌入式

    1.5K20

    Qt编写自定义控件2-进度条标尺

    绘制的方式,这样非常灵活可靠,继承自qwidget,这个控件属于标尺类控件的一个,就是在刻度尺控件基础上增加了鼠标按下拖动进度的功能。...int longLineLen = 15; int shortLineLen = 10; //根据范围值绘制刻度值及刻度值 长线条需要移动10像素 短线条需要移动5像素...int longLineLen = 15; int shortLineLen = 10; //根据范围值绘制刻度值及刻度值 长线条需要移动10像素 短线条需要移动5像素...全部纯Qt编写,QWidget+QPainter绘制,支持Qt4.6到Qt5.12的任何Qt版本,支持mingw、msvc、gcc等编译器,支持任意操作系统比如windows+linux+mac+嵌入式...linux等,不乱码,可直接集成到Qt Creator,和自带的控件一样使用,大部分效果只要设置几个属性即可,极为方便。

    1.5K60

    Qt编写自定义控件5-柱状温度计

    一、前言 柱状温度计控件,可能是很多人练手控件之一,基本上都是垂直方向展示,底部一个水银柱,中间刻度尺,刻度尺可以左侧右侧或者两侧都有,自适应分辨率改动,有时候为了美观效果,可能还会整个定时器来实现动画效果...,开启动画效果的缺点就是CPU占用会比较高,前阵子有个好友(贾文涛-涛哥)向我推荐了一个opengl绘制的开源东西,QNanoPainter,东西是个好东西,我个人的理解是直接封装了opengl绘制qpainter...,可以使得绘制全部走GPU,这样就可以大大减轻CPU的负担,非常方便,我自己试了下,方法和绘制逻辑和qpainter有点不一样,暂时没有将所有控件改成QNanoPainter版本,以后看情况吧。...int i = maxValue; i >= minValue; i = i - shortStep) { if (i % longStep == 0) { //绘制线条...全部纯Qt编写,QWidget+QPainter绘制,支持Qt4.6到Qt5.12的任何Qt版本,支持mingw、msvc、gcc等编译器,支持任意操作系统比如windows+linux+mac+嵌入式

    2.4K50

    Python Qt GUI设计:QPainter、QPen、QBrush和QPixmap窗口绘图类(基础篇—17)

    目录 1、QPainter绘图类 2、QPen绘图类 3、QBrush绘图类 4、QPixmap绘图类 ---- 本篇博文主要介绍如何实现在窗口中绘图, PyQt5,一般可以通过QPainter、QPen...1、QPainter绘图类 QPainterQWidget(控件)上执行绘图操作,它是一个绘制工具,为大部分图形界面提供了高度优化的函数,使QPainter类可以绘制从简单的直线到复杂的饼图等。...绘制操作QWidget.paintEvent()完成,绘制方法必须放在QtGui.QPainter对象的begin()和end()之间QPainter控件或其他绘图设备上执行较低级别的图形绘制功能...绘制文字,实质上文字屏幕上的显示是由一个个点(point)组成的,来看看QPainter如何绘制点。...来看看QPen绘图类的示例,效果如下所示: 示例,使用6种不同的线条样式绘制了6条线,其中前5条线使用的是预定义的线条样式。也可以自定义线条样式,最后一条线就是使用自定义的线条样式绘制的。

    2K40

    Qt编写自定义控件57-直方波形图

    直方波形图,主要就是将外部传入的坐标集合数据进行渐变过渡的绘制,产生一个动态的过渡效果,将设置的坐标集合重新运算+1变成新的坐标集合来绘制,这样看起来绘制不会很死,而是缓慢的过渡。...,启用反锯齿 QPainter painter(this); painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing...); //绘制背景 drawBg(&painter); //绘制线条 drawLine(&painter); } void WaveLine::drawBg(QPainter...全部纯Qt编写,QWidget+QPainter绘制,支持Qt4.6到Qt5.13的任何Qt版本,支持mingw、msvc、gcc等编译器,支持任意操作系统比如windows+linux+mac+嵌入式...linux等,不乱码,可直接集成到Qt Creator,和自带的控件一样使用,大部分效果只要设置几个属性即可,极为方便。

    1.1K30

    Qt编写自定义控件60-声音波形图

    一、前言 这个控件源自于一个音乐播放器,写该音乐播放器的时候,需要将音频的数据转换成对应的频谱显示,采用的fmod第三方库来处理(fmod声音系统是为游戏开发者准备的革命性音频引擎,非常强大和牛逼),...为了可以直接定位到某一位置直接跳转到音频位置,还增加了绘制线条定位线。...,启用反锯齿 QPainter painter(this); painter.setRenderHints(QPainter::Antialiasing); //绘制背景...drawBg(&painter); //绘制数据 drawData(&painter); //绘制当前位置线条 drawLine(&painter); } void WaveData...全部纯Qt编写,QWidget+QPainter绘制,支持Qt4.6到Qt5.13的任何Qt版本,支持mingw、msvc、gcc等编译器,支持任意操作系统比如windows+linux+mac+嵌入式

    1.9K20

    Qt编写自定义控件17-按钮进度条

    一、前言 按钮进度条,顾名思义,表面上长得像一个按钮,单击以后切换成进度条指示按钮单击动作执行的进度,主要用在一些需要直接在按钮执行动作显示对应进度的场景,很多网页中经常看到这种效果,这个效果有个优点就是直接在原地显示进度条...*painter); void drawProgress(QPainter *painter); private: int lineWidth; //线条宽度...if (1 == status) { //绘制当前进度 drawProgress(&painter); } else { //绘制按钮背景...全部纯Qt编写,QWidget+QPainter绘制,支持Qt4.6到Qt5.12的任何Qt版本,支持mingw、msvc、gcc等编译器,支持任意操作系统比如windows+linux+mac+嵌入式...linux等,不乱码,可直接集成到Qt Creator,和自带的控件一样使用,大部分效果只要设置几个属性即可,极为方便。

    1.4K00

    Qt编写自定义控件59-直方动态图

    一、前言 直方动态图类似于音乐播放时候的柱状图展示,顶部提供一个横线条,当柱状上升的时候,该线条类似于帽子的形式冲到顶端,相当于柱状顶上去的感觉,给人一种动态的感觉,听音乐的同时更加赏心悦目,原理比较简单...,就是用2个定时器,一个定时器间隔比较短,负责快速把柱状图从底部冲到设置的值,同时横线条跟随一起冲上去,一个定时器负责慢慢的跌落值到0,然后横线条缓慢下降,下降速度比柱状图的速度要慢一些,产生一种对比的效果...); //绘制渐变背景 drawBg(&painter); //绘制柱状条块 drawBar(&painter); //绘制顶部条块 drawHead(...全部纯Qt编写,QWidget+QPainter绘制,支持Qt4.6到Qt5.13的任何Qt版本,支持mingw、msvc、gcc等编译器,支持任意操作系统比如windows+linux+mac+嵌入式...linux等,不乱码,可直接集成到Qt Creator,和自带的控件一样使用,大部分效果只要设置几个属性即可,极为方便。

    1K30

    Qt编写自定义控件48-面板窗体控件

    一、前言 很多时候需要有一个控件,能够替代容器控件,自动容纳多个widget,自适应宽高,然后提供滚动条功能,这就必然需要用到QScrollArea控件,可设置各个子面板的间距等,也很多系统中用到,比如温湿度设备面板...在后期的Qt内置控件的研究过程,发现QListWidget也提供了类似的功能,所以后期有部分应用场景直接采用QListWidget来做。...,启用反锯齿 QPainter painter(this); painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing...); //绘制边框 drawBorder(&painter); //绘制标题 drawTitle(&painter); } void PanelItem::drawBorder...全部纯Qt编写,QWidget+QPainter绘制,支持Qt4.6到Qt5.12的任何Qt版本,支持mingw、msvc、gcc等编译器,支持任意操作系统比如windows+linux+mac+嵌入式

    1.5K30

    Qt编写自定义控件32-等待进度条控件

    一、前言 各种各样的执行任务界面,有时候需要比较多的时间,需要给出一个直观的等待进度条表示当前正在执行的进度,而不至于懵逼在那里,用户不会觉得程序死了还是干嘛了。...当时写这个等待进度条的时候,就有考虑到集成多种样式进去供用户选择,比如圆弧状风格、旋转圆风格、三角圆弧、线条风格、圆环风格等,一个控件就相当于五六个控件,这个才牛逼一些,而且代码还很完整和精彩。...全部纯Qt编写,QWidget+QPainter绘制,支持Qt4.6到Qt5.12的任何Qt版本,支持mingw、msvc、gcc等编译器,支持任意操作系统比如windows+linux+mac+嵌入式...linux等,不乱码,可直接集成到Qt Creator,和自带的控件一样使用,大部分效果只要设置几个属性即可,极为方便。...所有控件最后生成一个dll动态库文件,可以直接集成到qtcreator拖曳设计使用。 目前已经有qml版本,后期会考虑出pyqt版本,如果用户需求量很大的话。

    1.3K00

    Qt编写自定义控件50-迷你仪表盘

    初次看到类似的控件是一个音乐视频编辑软件,用来展示左通道右通道音量等,有非常多的类似的迷你仪表盘在整个软件系统,用户可以直接鼠标滑动调节,以最小的占用区域展示最大的信息,漂亮!..., side / 200.0); //绘制刻度线 drawScale(&painter); //绘制背景圆 drawBgCircle(&painter); //...绘制中心圆 drawCenterCircle(&painter); //根据指示器形状绘制指示器 if (pointerStyle == PointerStyle_Line)...全部纯Qt编写,QWidget+QPainter绘制,支持Qt4.6到Qt5.12的任何Qt版本,支持mingw、msvc、gcc等编译器,支持任意操作系统比如windows+linux+mac+嵌入式...linux等,不乱码,可直接集成到Qt Creator,和自带的控件一样使用,大部分效果只要设置几个属性即可,极为方便。

    1.3K20

    Qt编写自定义控件22-蚂蚁线

    一、前言 关于蚂蚁线控件,相信很多用过PS的人都知道,选中某个区域以后,边上的线条会有一种动态流动的效果,这种效果就叫做蚂蚁线,百科的解释是:动物的一种本能现象,领头的蚂蚁以随机的路线走向食物或洞穴,...图像影像软件中表示选区的动态虚线,因为虚线闪烁的样子像是一群蚂蚁跑,所以俗称蚂蚁线。Photoshop,After ffect等软件中比较常见。...蚂蚁线控件的核心比较简单,就是qpainterqpen的setDashPattern,这个可以设置连续几个值表示当前的黑白分割区域的位置线段和长度等,查看头文件得知void setDashPattern...pen.setColor(lineColor); pen.setDashPattern(dashPattern); painter.setPen(pen); //根据不同的样式绘制不同的线条...全部纯Qt编写,QWidget+QPainter绘制,支持Qt4.6到Qt5.12的任何Qt版本,支持mingw、msvc、gcc等编译器,不乱码,可直接集成到Qt Creator,和自带的控件一样使用

    90720

    Qt编写自定义控件62-探探雷达

    //绘制中间图片 drawImage(&painter); } void ScanTanTan::drawScan(QPainter *painter) { painter->save...全部纯Qt编写,QWidget+QPainter绘制,支持Qt4.6到Qt5.13的任何Qt版本,支持mingw、msvc、gcc等编译器,支持任意操作系统比如windows+linux+mac+嵌入式...linux等,不乱码,可直接集成到Qt Creator,和自带的控件一样使用,大部分效果只要设置几个属性即可,极为方便。...自带activex控件demo,所有控件可以直接运行在ie浏览器。 集成fontawesome图形字体+阿里巴巴iconfont收藏的几百个图形字体,享受图形字体带来的乐趣。...所有控件最后生成一个动态库文件(dll或者so等),可以直接集成到qtcreator拖曳设计使用。 目前已经有qml版本,后期会考虑出pyqt版本,如果用户需求量很大的话。

    83720
    领券