- 博客(22)
- 收藏
- 关注
原创 【无标题】Qt中继承QGraphicsItem并根据给定的起点坐标、终点坐标、中心坐标、半径和时针方向绘制一条弧线
首先,你需要创建一个继承自的自定义类。
2024-08-21 22:47:13 249
原创 自定义QGraphicsItem通过起点和终点画一个矩形
在你的主窗口类中,创建一个和一个,然后将添加到场景中。// 创建一个矩形的起点为 (50, 50),终点为 (150, 100) 的 RectangleItem。
2024-08-17 11:27:05 208
原创 软件设计模式
简单工厂模式用于封装对象的创建过程,将对象的创建与客户端解耦(使用不同的算法,完成一样的需求)工厂模式通过解耦客户端代码和创建具体对象的过程,使客户端代码不需要直接依赖于具体对象的创建方式,而是通过工厂来创建对象,从而提高代码的灵活性和可维护性。实现了一个工厂生产一类产品,不需要修改工厂类,只需要增加新的具体工厂类即可。主函数函数针对每种类型的具体产品,构造了每种具体产品的具体工厂,再由每个具体工厂生产出对应的产品。提供一个接口,可以创建多个产品族中的产品对象,同一类的多个产品对象不需要创建多个工厂。
2024-06-29 16:51:41 332
原创 C++基础+面试题
虚函数必须是其所在类的成员函数,而不能是友元函数或静态成员函数构造函数不能是虚函数通过基类指针或引用调用虚函数时,会根据对象的实际类型调用相应的函数构造函数不能是虚函数:虚函数对应一个vtable(虚函数表),这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,无法找到vtable,所以构造函数不能是虚函数。纯虚函数:
2024-06-28 10:14:14 772 1
原创 QT ----Canvas绘图
对画笔以及画刷样式进行设置设置画布的大小和位置,并且在onPaint事件中对画笔和画刷进行相关设置为了能让绘制出来的形状的坐标点设置更加直观,我在canvas中添加了一个背景矩形,并设置了其透明度1、直线4、文字。
2023-07-24 15:09:59 1184
原创 QTWidget---重写按钮移动事件
在mouseMoveEvent使用move函数根据光标点的移动进行相关的移动,如上图内所标志的有一种方法是被注释掉了,是因为第一种方法在平板上进行测试的时候发现会有按钮移动卡顿的情况,但是在电脑上就正常移动。第二种方法在平板和电脑上都可以正常移动。核心:新建类继承QWidget,重写mousePressEvent和mouseMoveEvent函数实现鼠标点击后的移动。继承QWidget,重写mousePressEvent和mouseMoveEvent函数。
2023-07-14 15:42:35 403 1
原创 qt-多线程
该函数的声明为:int startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer);Qt::VeryCoarseTimer(很粗略的定时器,只保留完整的第二精度,大约为500毫秒);Qt::PreciseTimer(精确的定时器,尽量保持毫秒精度,试图保持精确度在1毫秒);Qt::CoarseTimer(粗略的定时器,尽量保持精度在所需的时间间隔5%范围内);该函数开启一个定时器,返回值是定时器的编号。参数一为时间间隔,单位毫秒;
2023-06-08 18:09:51 153
原创 QTWidget中使用qml
第二步:连接qml中的信号小tips:QQuickItem是需要引入头文件的,不然在connect中会报错的输出结果:
2023-06-08 16:35:09 3175
原创 Qt-绘制事件
一般来说绘制操作是要使用QPainter类来实现的,而QPainter一般必须得要在paintEvent。小tips:使用drawEllipse绘制椭圆的过程中,如果半径/宽高是一样的话那么绘制出来的就是圆形哦。在设计页面显示中,qt的默认控件样式不能满足需求时,可使用qt中的QPainter类进行绘制。以上就是一些比较简单的绘图事件,也是个人工作中较常用到的,不定期更新一下。在qt中,使用drawRect函数绘制矩形有五种方法。第一步,初始化QPainter对象并设置其样式。
2023-06-07 14:45:47 755 1
原创 QT框架-----CTK
使用过QT的都知道,一般情况下,类与类、类与界面之间的数据交换、事件触发我们都是使用信号与槽的,但是在CTK框架中是使用信号与槽publishSignal(向ctk框架注册信号) + subscribeSlot(通过主题来订阅已在ctk框架中注册过的信号)、 类-sendevent + handleevent(此函数的类需要继承ctkEventHandler)。1、在激活类中实现start和stop两个函数,在start函数中定义唯一的插件类对象并使用其相关方法和变量等。2、在激活类中进行发布/订阅信号。
2023-05-30 17:31:37 2671 3
原创 QT-----ChartView控件的使用
在ChartView中有官方指定的可直接使用的主题进行使用,该主题设计了图表的背景色、标题文本样式、网格线样式等,所以在自己需要重定义的时候记住不要使用官方带的主题,如果使用了官方主题可能会导致自己设置的主题样式失效。踩坑:当时的轴是在自定义控件内定义的,但是在主界面内实现父控件时直接使用子控件id做x和y轴时一直没有效果。后面发下在实例化父类控件时不能直接使用子控件的id名,需要使用别名alias。1、 legend:图例对象:就是上面的红色区域啦,文字是在LineSeries中设定的。
2023-04-14 20:18:00 4656
原创 在子线程内使用计时器
1、不可以在构造函数内新建计时器对象,子线程在主线程内进行初始化,子线程的构造函数也是在主线程内执行,如果放在构造函数内那么也是在主线程内新建了一个计时器对象。,其实现了计时器的使用。第一种:不停循环执行的计时器,设置的时间间隔一到便会触发timeout信号,执行相关连接的槽函数。第二种:单次计时器,到了时间便执行一次连接的槽函数。2、新建的计时器对象不可指定父对象为this。可连接槽函数和lambda函数。3、要在子线程内开启事件循环。
2023-04-11 11:31:16 1035
原创 QT开启多线程-继承QThread类重写run函数
源文件实现:可以看见的是我们在run函数内和暂停函数中使用了互斥锁,当点击了暂停线程的按钮之后,暂停函数内的互斥锁锁定执行其中代码(可以什么都不写),解锁暂停函数内的互斥锁之后run函数即可正常运行了。我们这一章主讲继承QThread类重写run函数,这个开启线程的方式比较消耗内存,每次要使用的时候都要重新新建对象,并且只有run函数是在子线程内执行的,其余的函数都是在主线程内执行。3、在暂停函数内再次使用同一互斥锁进行锁定,抢占互斥锁为暂停函数可用,run函数没有使用资格,达到暂停的功效。
2023-03-26 10:45:15 1617
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人