![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Qt
虾球xz
光说不练假把式
展开
-
Qt6 ffmpeg 音频和视频(非同步)推流到nginx-rtmp 2
main.cpp#include <QApplication>#include "Controller.h"using namespace std;int main(int argc, char *argv[]){ QApplication a(argc, argv); qDebug() << "main thread:" << QThread::currentThreadId(); Controller *controller =原创 2021-11-20 18:07:44 · 3299 阅读 · 0 评论 -
Qt6 ffmpeg 音频和视频(非同步)推流到nginx-rtmp
main.cpp#include <QApplication>#include "Controller.h"using namespace std;int main(int argc,char *argv[]){ QApplication a(argc,argv); qDebug() << "main thread:" << QThread::currentThreadId(); Controller* controller =原创 2021-11-19 15:53:27 · 3612 阅读 · 0 评论 -
moveToThread 的样例
main.cpp#include <QCoreApplication>#include "Controller.h"using namespace std;int main(int argc,char *argv[]){ QCoreApplication a(argc,argv); qDebug() << "main thread:" << QThread::currentThreadId(); Controller* contro原创 2021-11-18 13:59:41 · 293 阅读 · 0 评论 -
Qt6 屏幕录相(包括音频视频)
widget.h#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QTimerEvent>QT_BEGIN_NAMESPACEnamespace Ui { class Widget; }QT_END_NAMESPACEclass Widget : public QWidget{ Q_OBJECTpublic: Widget(QWidget *parent = nullpt原创 2021-11-18 01:17:10 · 2357 阅读 · 3 评论 -
Qt6 QAudioSource录 pcm 音频
widget.h#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QAudioSource>#include <QFile>#include <QMediaFormat>#include <QMediaRecorder>#include <QUrl>#include <QMediaCaptureSession>#include <原创 2021-11-16 20:39:40 · 1513 阅读 · 1 评论 -
ffmpeg 推流到 crtmpserver 测试
直播rtmp 分发退流------>直播服务器CDN------>各个客户端(rtmp,http-flv,hls)推流RGB RGBrtsp h264 1.图像采集----->美颜,水印—>转YUV H264编码rtsp aac 2.音频采集----->去噪,变音—>音频重采样aac编码PCMh264----|---->FLV封装–>FLV—>推流---->RTMP–>直播服务CD原创 2021-11-15 01:09:10 · 941 阅读 · 0 评论 -
Qt6 tesseract-ocr 截图识字
ScreenCapturer.h#ifndef SCREENCAPTURER_H#define SCREENCAPTURER_H#include "mainwindow.h"// 它是QWidget的子类class ScreenCapturer : public QWidget{ //并且在类主体的开头具有Q_OBJECT宏 Q_OBJECTpublic: explicit ScreenCapturer(MainWindow *w); ~ScreenCapt原创 2021-11-14 16:15:05 · 2168 阅读 · 1 评论 -
Qt6 录音
widget.h#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QAudioSource>#include <QFile>#include <QMediaFormat>#include <QMediaRecorder>#include <QUrl>#include <QMediaCaptureSession>#include <原创 2021-11-13 18:21:21 · 622 阅读 · 0 评论 -
Qt6 截屏
widget.h#ifndef WIDGET_H#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACEnamespace Ui { class Widget; }QT_END_NAMESPACEclass Widget : public QWidget{ Q_OBJECTpublic: Widget(QWidget *parent = nullptr); void paintEvent(QPain原创 2021-11-12 12:50:28 · 373 阅读 · 0 评论 -
音频采样率 wav->aac
音频采样率1.采样率sample_rate 44100(CD)2.通道channels (左右声道)3.样本大小(格式) sample_size-AV_SAMPLE_FMT_S16-AV_SAMPLE_FMT_FLTPwav_to_aac.cppextern "C"{ #include <libavformat/avformat.h> #include <libswscale/swscale.h> #include <libswresample/swres原创 2021-11-10 18:52:20 · 869 阅读 · 0 评论 -
ffmpeg rgb_to_mp4
视频编码1.读取RGB文件转换为yuv2.压缩为h2643.封装为MP4ffmpeg -i test.mp4 -pix_fmt bgra out.rgbav_interleaved_write_frame1.AVFormatContext *s2.AVPacket *pkt3.按照dts排序4.av_write_frame (缓冲处理dts)rgb_to_mp4.cppextern "C"{ #include <libavformat/avformat.h>原创 2021-11-10 14:52:46 · 1172 阅读 · 1 评论 -
QPainter融合两张图片渲染
QPainter融合两张图片渲染QPainter painter(this);out = src.copy();QPainter p(&out);p.setRenderHint(QPainter::Antialiasing);p.drawImage(0,0,img);p.end();painter.drawImage(0,0,out);painter.end();XPS图片编辑器1.打开存储图片(菜单)2.画笔和橡皮3.画笔大小(QSlider)4.画笔颜色(QCol原创 2021-11-07 19:40:20 · 467 阅读 · 0 评论 -
QImage
QImage创建清空和空判断QImage(1280,720,QImage::Format_RGBA8888); //宽度以4对齐QImage img("1.jpg");if(!img.load("1.jpg")){}QImage img(data,1280,720,QImage::Format_RGBA8888) //uchar *dataQImage img = src.copy();QImage img(src);img = QImage(); //清空img.isNull();im原创 2021-11-07 16:19:36 · 1699 阅读 · 0 评论 -
QPainter
QPainter1.绘制文字2.绘制线3.绘制图形4.绘制融合图片绘制渲染的信号槽1.void paintEvent(QPaintEvent *ev);2.update();ui_widget.h#ifndef UI_WIDGET_H#define UI_WIDGET_H#include <QtCore/QVariant>#include <QtWidgets/QApplication>#include <QtWidgets/QFontCom原创 2021-11-07 16:02:09 · 138 阅读 · 0 评论 -
Qt事件Event
Qt事件Event1.事件函数event2.鼠标事件3.键盘事件4.窗口大小变化事件5.重绘事件重载event1.bool event(QEvent *e);2.返回true 处理下一个事件3.返回false本事件的下一个处理函数QEvent子类1.QKeyEvent,QMouseEvent2.QTouchEvent,QWheelEventQWidget重载函数1.virtual void keyPressEvent(QKeyEvent *event);2.virtua原创 2021-11-07 15:14:50 · 880 阅读 · 0 评论 -
QToolBar 工具栏 QStatusBar 状态栏
QToolBar 工具栏1.QToobar *mainToolBar = new QToolBar(this);2.mainToolBar->setGeometry(0,m->height(),width(),30);3.mainToolBar->setIconSize(QSize(30,30));4.mainToolBar->addAction(a1);QStatusBar 状态栏1.QStatusBar *statusBar = new QStatusBar(原创 2021-11-07 00:07:39 · 559 阅读 · 0 评论 -
QMenuBar
QT菜单1.QMenuBar2.QMenu3.QActionQMenuBar1.QMenuBar *m = new QMenuBar(this);2.QMenu *m1 = m->addMenu(QStringLiteral("菜单1"));3.QAction *a1 = m1->addAction(QStringLiteral("二级菜单1"));4.a1->setIcon(QIcon("test.jpg"));5.connect(a1,SIGNAL(trigger原创 2021-11-06 23:41:11 · 207 阅读 · 0 评论 -
QProgressBar
QProgressBar1.进度条2.功能类似QSliderQDialog 示例1.加载进度显示QDialog渐变透明关闭窗口1.10 0.0 setWindowOpacity2.QEventLoop loop;3.loop.processEvents();ui_progressdialog.h#ifndef UI_PROGRESSDIALOG_H#define UI_PROGRESSDIALOG_H#include <QtCore/QVariant>#includ原创 2021-11-06 17:56:53 · 360 阅读 · 0 评论 -
QDialog
QDialog1.常用方法2.QEventLoop 手动处理事件3.QProgressBar 进度条QDialog 常用方法1.exec阻塞有返回值show2.accept() QDialog::Accepted3.reject() QDialog::Rejected4.done(int i)5.result()QDialog示例1.自定义QMessageBox2.项目中新曾UIui_dialog.h#ifndef UI_DIALOG_H#define UI_DIALOG_H原创 2021-11-06 16:04:53 · 184 阅读 · 0 评论 -
QTreeWidgetQTreeWidget
QTreeWidget1.常用属性2.标题设置3.内容插入4.内容选择5.拖动和删除6.信号事件7.样式qssQTreeWidget 属性1.header()->setVisible(true)2.setSortingEnabled点击标题排序3.setAnimated 动画展开4.setVerticalScrollBarPolicy setHorizontalScrollBarPolicy滚动条5.selectionMode 单选,、多选,Ctrl,Shift6.setS原创 2021-11-06 12:34:43 · 381 阅读 · 0 评论 -
QTableWidget
QTableWidget1.常用属性设置2.设置水平和垂直标题3.插入数据(行,列,widget,图标,图片拉伸插入)4.获取选中的数据,单选删除,多选删除5.信号事件QTableWidget属性QTableWidget 插入标题1.setColumnCount(5);setRowCount(5)2.setHorizontalHeaderItem(int column,QTableWidgetItem \*item)3.setVerticalHeaderItem(int row,QTa原创 2021-11-05 21:55:48 · 1444 阅读 · 0 评论 -
QListWidget
QListWidget1.基本属性2.插入和或其选中的内容3.遍历和排序4.插入其他控件和编辑QListWidget属性1.selectionMode 单选多选2.flow从上到下还是从左到右3.gridSize每一行的宽高4.iconSize 图标的宽高QListWidget插入数据QListWidgetItem *newItem = new QListWidgetItem;newItem->setText(itemText);listWidget->insertI原创 2021-11-05 09:27:58 · 497 阅读 · 0 评论 -
QSlider
QListWidget1.基本属性2.插入和或其选中的内容3.遍历和排序4.插入其他控件和编辑QListWidget属性1.selectionMode 单选多选2.flow从上到下还是从左到右3.gridSize每一行的宽高4.iconSize 图标的宽高QListWidget插入数据QListWidgetItem *newItem = new QListWidgetItem;newItem->setText(itemText);listWidget->insertI原创 2021-11-05 07:22:22 · 233 阅读 · 0 评论 -
Qt - QVariant
QVariant1.void setValue(const T &value)2.T Value()3.QString s = v.value<QString>();4.Q_DECLARE_METATYPE(text)Widget.cpp#include "widget.h"#include "ui_widget.h"#include <QDebug>struct MyType{ int x = 0; int y = 0;};原创 2021-11-04 23:06:56 · 136 阅读 · 0 评论 -
QComboxBox
QComboxBox 下拉列表1.属性:编辑,图标大小2.插入数据(字符串,图标,自定义数据)3.读取删除数据4.信号事件QComboBox新曾数据1.void addItem(const QString &text,const QVariant &userData = QVariant());2.void addItem(const QIcon &icon, const QString &text, const QVariant &userData原创 2021-11-04 22:15:14 · 224 阅读 · 0 评论 -
Qt - QRadioButton
QRadioButton1.类似QCheckBox2.默认单选3.布局器4.QButtonGroup获取选中的ButtonWidget.cpp#include "widget.h"#include "ui_widget.h"#include <QRadioButton>#include <QVBoxLayout>#include <QButtonGroup>#include <QPushButton>#include <QMes原创 2021-11-04 21:15:52 · 225 阅读 · 0 评论 -
QCheckBox
QCheckBox1.QAbstractButton 支持快捷键2.text() setText()3.bool isChecked() const4.void setChecked(bool) toggled(bool)QCheckBox 多选和单选1.setAutoExclusiveQCheckBox 事件1.clicked(bool)2.toggled(bool)QCheckBox1.QAbstractButton 支持快捷键2.text() setText原创 2021-11-04 18:18:38 · 475 阅读 · 0 评论 -
布局Layout
布局Layout1.Vertical Layout2.Horizontal Layout3.Grid Layout4.Form LayoutsizeHint推荐尺寸1.QSize sizeHint() 推荐尺寸只能重载修改2.QSize size() 不包含边框的窗口尺寸QSizePolicy::PolicyFlag1.GrowFlag 必要时可超过推荐2.ExpandFlag 尽可能的扩展3.ShrinkFlag 必要时可小于推荐4.IgnoreFlag 缺省大小被忽略原创 2021-11-04 16:48:46 · 196 阅读 · 0 评论 -
遍历所有QObject的子节点
遍历所有QObject的子节点1.遍历子节点-获取节点对象的名称2.QObjectList children()3.objectName()4.转换子节点-获取节点对象的类型5.QMetaObject *metaObject()6.metaObject()->className();7.qobject_cast<QCheckBox*>(cb);ui_widget.h#ifndef UI_WIDGET_H#define UI_WIDGET_H#include <原创 2021-11-04 11:38:27 · 535 阅读 · 0 评论 -
QLineEdit 常用属性
QLineEdit1.setText 设置文本 槽函数 不发信号2.text()获取文本3.setPlaceholderText 设置提示文字QLineEdit常用属性1.setClearButtonEnabled2.setReadOnly3.setMaxLengthQLineEdit撤销和恢复1.undo()2.redo()#ifndef UI_WIDGET_H#define UI_WIDGET_H#include <QtCore/QVariant>#inclu原创 2021-11-04 11:13:59 · 1219 阅读 · 0 评论 -
QPushButton 样式设置 渐变圆角光泽按钮
QPushButton1.事件设置2.快捷键设置3.样式设置QPushButton事件信号1.click()2.click(bool) 是否选中3.pressed()4.released()#include <QWidget>#include <QDebug>QT_BEGIN_NAMESPACEnamespace Ui { class Widget; }QT_END_NAMESPACEclass Widget : public QWidget{原创 2021-11-03 23:51:16 · 1967 阅读 · 0 评论 -
QLabel文本字体的选中
//#include "widget.h"#include <QApplication>#include <QMessageBox>#include <QDebug>#include <QTextCodec>#include <iostream>using namespace std;int main(int argc, char *argv[]){ QApplication app(argc,argv); QSt.原创 2021-11-03 22:10:05 · 559 阅读 · 0 评论 -
Qt 字符串查找 字符串截断
Qt 字符串查找itstr.indexOf("xc")itstr.indexOf("xc",itstr.indexOf("xc")+2)itstr.lastIndexOf("xc")itstr.indexOf(QRegExp("[0-9]+"));字符串截断itstr.chop(5);itstr.left(itstr.indexOf("xc"));itstr.right(itstr.size() - itstr.indexOf("xc") - 2);字符串替换itstr.r原创 2021-11-03 17:22:36 · 897 阅读 · 0 评论 -
QString
QString1.16-bit QChars ushort Unicode 4.02.封装了字符串处理功能3.空判断 == " " isNull isEmpty4.字符串拼接 +=5.格式化字符串%1 %2 arg()int main(int argc, char *argv[]){ QApplication a(argc, argv); QString str; str = QString("name = %1 arg %2 %3 %4 %5\n")原创 2021-11-02 23:23:19 · 97 阅读 · 0 评论 -
窗口的状态
窗口的状态-最大化最小化全屏1.setWindowState(Qt::WindowMaximized);2.WindowMinimized WindowMaximizedWindowNoState WindowFullScreen3.showMaximized() showMinimized()4.showNormal() showFullScreen()定制窗口1.CustomizeWindowHint2.setWindowFlags3.setWindowFlag(Qt::WindowC原创 2021-11-02 22:10:03 · 290 阅读 · 0 评论 -
QWidget
QWidget1.所有用户界面的基类2.窗口部件接受鼠标,键盘等事件3.屏幕上绘制自己4.父子关系有相对坐标QThread1.线程接口继承QThread2.void run(){}//线程处理函数3.void start(){}//线程启动函数手动创建QWidget 对象1.QWidget w;2.w.show(); //显示包含子窗口,槽函数QWidget窗口的坐标和尺寸1.QRect geometry();2.setGeometry(x,y,width,height)3.x原创 2021-11-02 20:14:39 · 148 阅读 · 0 评论 -
手动添加信号槽
widget.h#ifndef WIDGET_H#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACEnamespace Ui { class Widget; }QT_END_NAMESPACEclass Widget : public QWidget{ Q_OBJECTpublic: Widget(QWidget *parent = nullptr); ~Widget();private:原创 2021-11-02 17:13:58 · 95 阅读 · 0 评论 -
Qt 信号槽
信号槽1.类似windows的消息机制2.信号函数,只发送不需要知道接受者3.槽函数(普通函数),只接受不管通信4.QObject绑定Qt信号槽原理1.绑定信号函数和槽函数2.调用信号函数(将信号写入队列)3.主线程从队列中获取信号信号处理的主循环QApplication a(argc,argv);//Enters the main event loop and waits until exit() is calledreturn a.exec()创建testsign.pr原创 2021-11-02 16:17:19 · 209 阅读 · 0 评论 -
跨平台编译项目
1.linux:INCLUDEPATH += “”2.linux:{message(linux)}3.message($$QMAKESPAEC)xz@xiaqiu:~/study/csdn/day0/test/build$ ls /opt/Qt/Qt6/6.2.0/gcc_64/mkspecs/aix-g++ integrity-x86 macx-clang solaris-cc-64aix-g++-64原创 2021-11-02 15:23:06 · 293 阅读 · 0 评论 -
Qt创建动态库
1.TEMPLATE = lib2.静态库CONFIG += staticlib创建XSocket.cpp XSocket.htestlib.proSOURCES += XSocket.cppHEADERS += XSocket.hTARGET = testlibTEMPLATE = lib xz@xiaqiu:~/study/csdn/day0/testlib$ lstestlib.pro XSocket.cpp XSocket.hxz@xiaqiu:~/study/cs原创 2021-11-02 14:59:56 · 554 阅读 · 0 评论