用QChart绘制波形图 用到的知识

本文详细介绍了Qt中的QCharts库,包括坐标轴类型、波形图绘制、QCustomPlot高效绘图、 QLabel 自适应文本和OpenGL加速。重点讲解了如何使用QLineSeries创建折线图,以及如何设置坐标轴和用户数据。
摘要由CSDN通过智能技术生成

Qt开发技术:QCharts(一)QCharts基本介绍以及图表框架详解

QT – QChart的几种 坐标轴 的详细介绍及使用代码示例

QT篇之QChart绘制波形图操作(上)

QT篇之QChart绘制波形图操作(中)

Qt超强绘图QCustomplot 动态图静态图时间坐标轴

QCustomPlot使用手册(持续更新中。。。)

QCustomPlot使用手册

Qt 之界面数据存储与获取

//setUserData()和userData()
//通过setUserData(),我们可以存储用户数据。

//注意:用户数据需要被定义为QObjectUserData类型。

struct SenderInfo:public QObjectUserData
{
	QString strName;
}

QPushButton *pButton = new QPushButton(this);
pButton->setText("Sender1");

// 用户数据
SenderInfo* pInfo = new SenderInfo;
pInfo->strName="Sender1"; 

pButton->setUserData(Qt::UserRole, pInfo );  // 设置用户数据

// 连接信号槽
connect(pButton, &QPushButton::clicked, this, &MainWindow::onClicked);

槽函数,获取用户数据,执行相应操作。

void onClicked() {
    // 获取发送者
    QObject *pObject = this->sender();
    QPushButton *pButton = qobject_cast<QPushButton *>(pObject);

 	// 获取用户数据
	SenderInfo* pInfo = (SenderInfo*)(pButton->userData(Qt::UserRole));
   
    qDebug() << "sender: " <<pInfo->strtName;
}
通过userData()可以获取QObjectUserData数据,然后转换成我们需要的类型User。
//效率较高的往折线图中插入数据
_pLineSeries = new QLineSeries;
_pLineSeries2 = new QLineSeries;
_pLineSeries3 = new QLineSeries;
_pLineSeries4 = new QLineSeries;
QList<QLineSeries *> listLine;
listLine.append(_pLineSeries);
listLine.append(_pLineSeries2);
listLine.append(_pLineSeries3);
listLine.append(_pLineSeries4);
for(int index = 1; index < 4; index++)
{
    QList<QPointF> listPointF;
    for(int index = 0; index < 11; index++)
    {
        listPointF << QPointF(index, qrand()%11);
    }
    listLine.at(index)->append(listPointF);
    listLine.at(index)->setName(QString("通道%1").arg(index+1));
    listLine.at(index)->setPen(QPen(QColor(qrand()%256, qrand()%256, qrand()%256), 2));
    listLine.at(index)->setUseOpenGL(true);//opengl显示加速,奔奔马上变奔驰
    // 通用:将批量数据插入到图表中
    _pChart->addSeries(listLine.at(index));
}



Qt 让QLabel自适应text的大小,并且自动换行

在实现了newform的2个页面的功能以后,为了完善产品的人性化,我在第2个页面上增加了一个显示前面已经选择的路径和模板名称的功能。但是这里就遇到了一个问题,如果万一用户选择的路径和名称都太长了,那么下面在显示的时候就会截断,这就很不爽了。

别看这个小问题,这就涉及了2个技巧。
1
让QLabel自适应text的大小,直接用下面的代码:
LabelName->adjustSize();
LabelName->setText(“1234”+"\r\n"+“456789”);//两行显示
LabelName->LabelName->setAlignment(Qt::AlignCenter);//垂直水平居中

让QLabel能够自动判断并换行显示:
LabelName->setGeometry(QRect(328, 240, 329, 27*4)); //四倍行距

LabelName->setWordWrap(true);
LabelName->setAlignment(Qt::AlignTop);

设置QLabel文本的颜色

第一种,使用setPalette()方法如下:

QLabel *label = new QLabel(tr("Hello Qt!"));
QPalette pe;
pe.setColor(QPalette::WindowText,Qt::white);
pe.setColor(QPalette::Background, Q::yellow);
label->setAutoFillBackground(true); //这句很关键,否则背景色被默认windows替代
label->setPalette(pe);

第二种,使用样式表如下:

setStyleSheet("color:red;"); 
//setStyleSheet("color:#ff6600;");

第三种,使用QStyle,在Qt Demo中有一个很好的讲解QStyle的例子,可以参考学习。

第四种,使用一些简单的HTML格式:

QLabel *label = new QLabel("<h2><i>Hello</i><font color=red>Qt!</font></h2>");

往QChart中显示折线图,需要注意的:

首先是画两条折线(限制线)的代码
在这里插入图片描述
其次,是第一种为上面画的两条折线添加并关联坐标轴【一定要注意将上面画的两条折线关联到X/Y轴上,否则画的东西跟坐标轴上显示的数据毫无关联】
在这里插入图片描述
第二种为上面画的两条折线,添加显示,这种方法可取,只用设置一次,不用为关联到这上面的所有折线都attachAxis,一劳永逸
在这里插入图片描述
推荐使用第二种方法
最后,整个效果如下,完美
在这里插入图片描述

**

listLine.at(index)->setUseOpenGL(true);//opengl显示加速,奔奔马上变奔驰

**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值