Qt5 在控件中绘图
来源:互联网 发布:女生学电脑编程好吗 编辑:程序博客网 时间:2024/05/16 15:19
一、在主窗口QMainWindow中,加入Widget 控件,并在控件上绘图
1、新建项目 - 基类选择QMainWindow(类命名为test)
2、新建Qt设计师界面类 - 界面模板选择Widget - 类命名为waveform - 生成waveform.h waveform.cpp
3、改写waveform类(waveform.h waveform.cpp),重载绘图函数 voidpaintEvent(QPaintEvent*); 一个绘制wav波形的例子可见另一篇文章http://blog.csdn.net/maverick1990/article/details/8996608
4、在主窗口设计界面test.ui中绘制Widget控件,命名为paint
5、右键刚才画的paint控件 - 提升为... - 基类选择QWidget - 提升的类名称填写waveform(头文件waveform.h)- 添加 - 提升
此方法便将test.ui中的paint控件和waveform类相关联,waveform的绘图就会显示到paint中
接下来实现waveform接收test中的信号,向waveform传递参数(本例中为wav文件的路径),并绘制相应图形(本例为wav波形图),并显示到test的paint中
6、在test.h的基类中声明一个信号(信号不需定义,只要声明即可):
signals: void openFileNow(const QString&);
传递的参数为wav的路径
7、在指定的发送信号函数中(比如我的是openlist的doubleclick信号)发出刚才声明的信号:
emit openFileNow(path);
8、在waveform中定义接受信号的槽:
(1)在waveform.h中声明槽,参数需和刚才声明的信号参数一致:
public slots: void startpaint(const QString&);
(2)在waveform.cpp中定义槽,重绘waveform:
void waveform::startpaint(const QString& path){ m_Filename = path; this->repaint();}
m_Filename为waveform的成员变量,存储wav路径
9、关联信号和槽:
在test.cpp构造函数中加入:
QObject::connect(this,&test::openFileNow,ui->paint,&waveform::startpaint);
参数1:发送者,参数2:发送的信号,参数3:接收者,参数4:接收的槽
由此完成在QMainWindow中发送信号,由另一个Widget类绘图并显示到QMainWindow的Widget控件中的功能
二、在主窗口的弹出窗口QDialog中的Widget控件绘图
给定一个主窗口为QMainwindow的项目,在主窗口初始化一个QDialog窗口,再在新窗口的Widget控件中绘图
略过主窗口部分:
1、新建Qt设计师界面类 - 界面模板选择Dialog - 类命名为dlg - 生成dlg.h dlg.cpp
2、改写dlg类,重载绘图函数 void paintEvent(QPaintEvent*); 内容为空。一定要在这个类中重载paintEvent函数,才能成功绘制
3、新建Qt设计师界面类 - 界面模板选择Widget - 类命名为waveform - 生成waveform.h waveform.cpp 同上
4、改写waveform类(waveform.h waveform.cpp),重载绘图函数 voidpaintEvent(QPaintEvent*); 同上
4、在dlg设计界面中绘制Widget控件,命名为paint
5、右键刚才画的paint控件 - 提升为... - 基类选择QWidget - 提升的类名称填写waveform(头文件waveform.h)- 添加 - 提升
此方法便将test.ui中的paint控件和waveform类相关联,waveform的绘图就会显示到paint中
传参数方法同上,使用信号和槽,就不赘述了
- Qt5 在控件中绘图
- Qt 在控件中绘图
- Qt5 在表格中加入控件
- Qt学习笔记(1)---QT5利用事件过滤器实现在控件上绘图
- QT中使用QPainter在ui子控件中绘图
- VC中在对话框上的static控件中绘图
- 在Visual C++ 中开发自定义的绘图控件
- 在 Visual C++ 中开发自定义的绘图控件
- 在 Visual C++ 中开发自定义的绘图控件 NM_CUSTOMDRAW
- 在 Visual C++ 中开发自定义的绘图控件(一)
- 怎样在VS2010-2017中使用LightningChart绘图控件?
- 在窗口中绘图
- 在AWT中绘图
- 在 QT5 中使用 SQLITE
- Visual Studio 2005:在 Visual C++ 中开发自定义的绘图控件
- Visual Studio 2005:在 Visual C++ 中开发自定义的绘图控件
- Visual Studio 2005:在 Visual C++ 中开发自定义的绘图控件
- 转自MSDN: Visual Studio 2005:在 Visual C++ 中开发自定义的绘图控件
- Python 学习笔记之流程控制
- html中id与Name的区别
- 耦合与内聚
- 存储管理分析
- J2EE
- Qt5 在控件中绘图
- 123
- OpenCV学习笔记(26)自动识别OpenCV版本并添加依赖库
- C#_读取EXCEL文件的三种经典方法.
- 介绍一个C++的ORM工具ODB
- linux下的UART试验
- Struts2学习笔记02
- MySQL数据同步【双主热备】
- 小小经验