本文主要是分享一下7月初开始秋招前用QT做的个小工具,因为我方向是机器视觉算法和软件开发嘛,所以做这个练个手。 代码在公众号后台直接回复【QT】就可以了。...大体包括的内容就是菜单栏,右键快捷菜单,栈窗口等等界面控件的使用,opencv与QT图像类型之间的转换,还有多线程的使用。...具体效果可以看下面这个小视频: 除了代码,还录了一个29分钟的小教程将整个代码和界面都简单讲解了一下, 整个教程还拆分成了12个小视频,每个都短短几分钟哈哈,所以肯定不会收藏吃土了吧。
QT窗口部件 默认部件基类 QT提供的默认部件基类包括QMainWindow、QWidget、和QDialog,这三个部件基类也是用的最多的。...布局有一个中心区域,通常是标准的QT部件,也可以是定制的部件,且必须有一个中心小部件。setCentralWidget()方法可设置中心部件。...QWidget类是所有部件对象的基类,被称为基础窗口部件。 QWidget提供自我绘制和处理用户输入等基本功能,如接收鼠标、键盘和其他事件,并且在屏幕上绘制自己的表现。...非顶级窗口部件时父窗口的子部件。 QWidget构造函数有两个参数:QWidget*parent = 0,QT:WindowFlages f = 0。...QT:WindowFlags是QT:WindowType,枚举值的组合,用来设置窗口的属性,f=0表示默认为QT:Widget风格,setWindowState()可设置窗体的状态,参数由QT:WindowStates
Qt的容器窗口部件是一种可以包含其他窗口部件的窗口部件。QFrame可画些简单的图形,也可作为其他控件的基类,如QToolBox,QLabel等。 ?...(Qt助手就是使用QTextBrowser来为用户呈现文档的) ? Qt提供数个用于数据输入的窗口部件。如图,QLineEdit可以使用一个输入掩码、一个校验器或者同时使用两者对它的输入进行限定。...QTextEdit 是QAbstractScrollArea的子类,具有处理大量文本的能力。一个QTextEdit可以设置用于编辑普通文本还是富文本。...Qt提供一个通用消息框和一个能记住它所显示的消息内容的错误对话框。可以使用 QProcessDialog 或者 5 中的 QProcessBar 来对那些非常耗时的操作进行指示。...Qt提供一套标准的通用对话框,这样可以要用户很容易的选择字体、颜色、文件或者文档打印。如下图。 ?
文件处理 QFile类用于文件操作,它提供了读写文件的接口,可以读写文件、二进制文件和Qt资源文件。 处理文本文件和二进制文件,可以使用QTextStream类和QDataStream类。...处理临时文件可以使用QTemporaryFile,获取信息可以使用QFileInfo,处理目录可以使用QDir,监视文件和目录变化可以使用QFileSystemWatcher。
事件处理 QT中,事件作为一个对象,继承自QEvent类,常见的有键盘事件QKeyEvent、鼠标事件QMouseEvent和定时器事件QTimerEvent等。...QT中,任何QObject子类示例都可以接收和处理事件。实际编程中通常实现部件的paintEvent()、mousePressEvent()等事件处理函数来处理特定部件的特定事件。...); m_posLabel->setFixedWidth(100); statusBar()->addPermanentWidget(m_statusLabel);//状态栏添加永久部件...mainLayout->addWidget(m_stateLabel); resize(m_image2.width() * 3,m_image2.height() *2); //给图片标签部件安装事件过滤...//放大图片 matrix.scale(2.0,2.0); //对象 if(watched == m_label1) { //鼠标按下事件的处理
), QBrush(Qt.blue)) scene.addRect(220, 80, 200, 160, QPen(Qt.red)) self.view = QGraphicsView...QLCDNumber会将非法字符替代为空格 常用方法: checkOverflow(double num) :检查给定值是否可以在区域内显示(也会发射overflow信号,可以将其连接到槽函数中处理)...self.setGeometry(300, 300, 300, 200) self.setWindowTitle('练习 :QProgressBar') self.show() # 定时器处理函数...self.progressbar_obj1.setValue(self.step) def on_button_clicked(self): # 按钮被单击后的处理函数...,可以在PyQt和Qt的应用中显示图形(包括2D和3D图形),在Designer中,该部件没有任何独有属性,都是继承的QWidget的属性。
QVBoxLayout() #创建按钮并设置居中 self.l1=QLabel('current value') self.l1.setAlignment(Qt.AlignCenter...sliderReleased: 当用户释放滑块时发射此信号 import sys from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtCore import Qt...self), self.frm_g) fLayout.addRow(QLabel('Blue', self), self.frm_b) slider = QSlider(Qt.Horizontal
一、环境介绍 QT版本: 5.12.6 操作系统: win10 64位 二、功能介绍 为了在UI设计师界面里,使用自定义控件(就是需要重写该控件的一些函数,比如重绘自己想要的图形界面),基本使用方式是...,自己重写个控件,就是继承某个基类; 比如,写一个继承自QWidget的MyWidget界面类,这样就可以使用自己的方式处理这个界面,然后在UI设计师主界面中拖出来一个QWidet控件提升为MyWidget
qt事件处理 qt事件处理比较恶心,各个事件都是独立的。如果同一时间出现多个事件,某些事件在qt中接收不到。...可以参考qtbase源码事件处理部分,所有的事件都在switch…case中处理,所以一次循环只会处理一个事件。...参考代码,QEvent::MouseMove和QEvent::MouseButtonPress,同一个循环不可能同时处理两个事件。鸡肋!!!...---- 代码上,通过单一的事件避免同时处理两个事件的操作。
一、前言 在之前做的视频监控系统中,根据不同的用户需要,做了好多种视频监控内核,有ffmpeg内核的,有vlc内核的,有mpv内核的,还有海康sdk内核的,为了做成通用的功能,不同内核很方便的切换,比如...,后面还需要增加大华sdk或者其他第三方厂家的协议的时候,直接套用这个通用视频控件即可。...} } } void VideoWidget::dragEnterEvent(QDragEnterEvent *event) { //拖曳进来的时候先判断下类型,非法类型则不处理...->mimeData()->hasFormat("application/x-qabstractitemmodeldatalist")) { event->setDropAction(Qt...accept(); } else if(event->mimeData()->hasFormat("text/uri-list")) { event->setDropAction(Qt
QT 是一个跨平台C++图形界面开发库,利用QT可以快速开发跨平台窗体应用程序,在QT中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率。...目前,QT开发中常用的基础组件有以下几种:PushButton 按钮组件LineEdit 单行输入组件SpinBox 数值组件HorizontalSlider 滑块条组件LCDNumber 数码表与LCD...ProgressBar 进度条与定时器DateTime 日期与时间组件PlainTextEdit 多行文本框RadioButton 单选框分组如上方列表中提到的的组件,就是在开发中经常被使用的,这些组件我将通过一个个小案例...PushButton 按钮组件: 在QT中任何组件都可以用两种创建方式,我们可以通过使用new关键字动态创建按钮,也可以使用QT的图形化工具自动生成。...,处理的函数(槽函数)) connect(btn,&QPushButton::clicked,this,&QWidget::close); // 将窗体中的 [触发信号] 按钮,连接到Print
这就是这个控件的来由,还有一种场景比如组态软件,自由拖动设计自定义控件和图片等,也需要在容器中拖来拖去的,如果有一个通用的控件移动类,直接new出来传入需要移动的widget,这样就方便多了,不需要每个控件或者窗体自身去实现这种通用的重复的功能...= Qt::LeftButton) { return false; } //判断控件的区域是否包含了当前鼠标的坐标
QT 是一个跨平台C++图形界面开发库,利用QT可以快速开发跨平台窗体应用程序,在QT中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率。...目前,QT开发中常用的基础组件有以下几种: PushButton 按钮组件 LineEdit 单行输入组件 SpinBox 数值组件 HorizontalSlider 滑块条组件 LCDNumber 数码表与...进度条与定时器 DateTime 日期与时间组件 PlainTextEdit 多行文本框 RadioButton 单选框分组 如上方列表中提到的的组件,就是在开发中经常被使用的,这些组件我将通过一个个小案例...PushButton 按钮组件: 在QT中任何组件都可以用两种创建方式,我们可以通过使用new关键字动态创建按钮,也可以使用QT的图形化工具自动生成。...,处理的函数(槽函数)) connect(btn,&QPushButton::clicked,this,&QWidget::close); // 将窗体中的 [触发信号] 按钮,连接到
---- 两者的区别: Item Views(Model-Based)的对象进行数据操作相对比较复杂,但处理及展示大数据量时性能高; Item Widgets的数据操作比较简单,但处理及展示大数据量时性能相对低...详细介绍可看博客: “QT学习2:Table/List/Tree的View,Widget,Model相关” ---- List View : List Widgets : QListView是基于Model...Tree Widgets :提供了一个默认模型的部件,比较方便。...基础知识(九)列表控件QColumnView” “Qt编写ColumnView入门示例” #可以指定列表视图是否获取调整大小。...详细介绍可看博客: “实战PyQt5: 078-撤销命令视图QUndoView” “Qt如何实现QTableView的撤消与恢复功能”
在继承了 QWidget 窗口类以后,我们可以实现很多父类提供的虚函数,其中就包括鼠标的诸多消息处理函数,比如 mousePressEvent(鼠标单击消息)、mouseReleaseEvent(鼠标弹起消息...)等等,这些虚函数我们可以通过 Qt 的帮助文档查看,如下: 图片 只要你重写这些提供的虚函数,就可以捕获对应的消息,下面我们做了一些鼠标消息的小例子,借这些例子,你也可以覆写一些键盘等方面的消息处理虚函数...【实现代码】 代码分三个文件,分别为(参考 使用 Qt 构建一个简单的窗体程序 ): main.c:创建应用程序框架,调用 CWidget 窗口的入口函数。..."; } // 判断是否按下了 CTRL 键 if (ev->modifiers() == Qt::CTRL) { qDebug() << "ctrl is down......"; } } void CWidget::mouseReleaseEvent(QMouseEvent *ev) { // 鼠标左键单击弹起 if (ev->button() == Qt:
在QPaintDevice帮助文档中找到了下面解释: Warning: Qt requires that a QGuiApplication object exists before any paint...警告:在创建任何绘画设备之前,Qt要求先存在QGuiApplication对象。 绘图设备访问窗口系统资源,并且在创建应用程序对象之前是不会初始化这些资源。 ...顺便也找下Qt源码的错误出处: QPixmap::QPixmap(const QString& fileName,...) : QPaintDevice() { ......qt_pixmap_thread_test()) return; ... } static bool qt_pixmap_thread_test() { if (Q_UNLIKELY...的派生类都需要遵循,如: QImage QOpenGLPaintDevice QPagedPaintDevice QPaintDeviceWindow QPicture QPixmap 君君在实际使用中Qt
比如地图标注,同时还需要可拖动对象到指定位置显示,能有多种状态指示,安防领域一般用来表示防区或者设备,可以直接显示防区号,有多种状态颜色指示,例如布防、撤防、旁路、报警、离线、在线等状态,可以作为一个通用的设备按钮对象使用...img.isNull()) { img = img.scaled(width, height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation...QRectF(0, 0, width, height - y); } //绘制文字标识 painter.setFont(font); painter.setPen(Qt...::white); painter.drawText(rect, Qt::AlignCenter, text); } bool ButtonDefence::eventFilter(QObject...static_cast(event); if (this->rect().contains(e->pos()) && (e->button() == Qt
今天在做音视频合成功能,由于Qt的定时器精度问题,导致视频合成有问题。 视频合成是采用FFmpeg实现的,将h264视频和aac视频合成到mp4容器中。...定时器官方文档介绍: 有关更多QTimer的内容请看往期推文《Qt多种定时器》。...最后的解决方法是: 独立线程编解码合成; 设置QTimer定时器为高精度定时器(setTimerType(Qt::PreciseTimer))。
type == Qt::SubWindow) type = Qt::Window; if (type !...= Qt::Widget && type != Qt::Window && type !...,Dialog时则会设置关闭按钮不处理退出程序的操作。」...= Qt::Widget && type != Qt::Window && type !...= Qt::Dialog) q->setAttribute(Qt::WA_QuitOnClose, false); 问题解决 设置setAttribute(Qt::WA_QuitOnClose
一、前言 前面几篇文章,依次讲了解码播放、录像存储、读取和控制、事件订阅等,其实这些功能的实现都离不开封装的通用的接口,最开始本人去调用一些设置的时候,发现多参数的不好实现,原来需要用mpv_node处理...,而Qt中如何转成mpv_node需要特殊的处理才行,后来在开源主页看到了官方提供的demo例子,直接用qt封装好了多个接口(https://github.com/mpv-player/mpv-examples...主要接口如下: 通用获取属性接口函数 get_property_variant 通用设置属性接口函数 set_property_variant 通用设置参数接口函数 set_option_variant...通用执行命令接口函数 command_variant 二、功能特点 多线程实时播放视频流+本地视频等。...} return r; } bool test_type(const QVariant &v, QMetaType::Type t) { // The Qt
领取专属 10元无门槛券
手把手带您无忧上云