“无法粘贴窗口部件”错误以及customplot
- “无法粘贴窗口部件”错误
- customplot
- 下载
- 添加到项目中
- 使用QCustomPlot
- 常用的代码
“无法粘贴窗口部件”错误
情景:使用QT设计界面,很多部分比较类似,可以复制另一个界面的ui,但是粘粘的时候会报错“无法粘贴窗口部件”。
错误提示:无法粘贴窗口部件。设计师找不到一个没有布局的容器来包含它。
方法:需要复制的UI布局要拆分,要复制放进的父类布局也拆分。
customplot
customplot能用来画图和数据可视化。
下载
去官网下载:https://www.qcustomplot.com/index.php/download
下载需要版本的QCustomPlot的压缩包QCustomPlot.tar.gz。
添加到项目中
把解压后的h和cpp文件复制到项目文件夹,并在项目中添加现有文件。
检查一下pro文件有没有把相应的QT变量添加进去有些版本要手动添加。
QT += printsupport
QMAKE_CFLAGS += -Wa,-mbig-obj
QMAKE_CXXFLAGS += -Wa,-mbig-obj
使用QCustomPlot
在ui中,先生成一个QWidget,然后右键提升为QCustomPlot。
ui设计里面不会有变化,但是运行后界面上会有变化。
常用的代码
前面ui中的QCustomPlot我命名为了alinePlot,下面是一些常用的建立曲线的代码。
QVector<double> x(1000), y(1000); //初始化向量x和y
for (int i=0; i<1000; ++i)
{
x[i] = i; // x范围[-1,1]
y[i] = x[i]*x[i]; // y=x*x
}
// x和y
ui->alinePlot->xAxis->setLabel("Pixels");// x坐标题目
ui->alinePlot->xAxis->setRange(0,2048);// x坐标范围
ui->alinePlot->yAxis->setLabel("Intensity");// y坐标题目
ui->alinePlot->yAxis->setRange(0,65535);// y坐标范围
// 图例
ui->alinePlot->legend->setVisible(true);// 图例显示
ui->alinePlot->legend->setBrush(QColor(255,255,255,0));//图例背景
// 添加曲线
ui->alinePlot->addGraph();// 创建新画布,每个Graph及其上的线构成一幅图
ui->alinePlot->graph()->setPen(QPen(Qt::red));// 设置画笔颜色
ui->alinePlot->graph(0)->setVisible(true);// 可视化
ui->alinePlot->setData(x,y);// 添加数据
ui->alinePlot->graph(0)->setName("data");// 曲线名称
ui->alinePlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom); // 允许用户用鼠标拖拉、缩放任一幅图
// 坐标轴图案
ui->alinePlot->xAxis->setUpperEnding(QCPLineEnding::esFlatArrow);// 末尾箭头
ui->alinePlot->yAxis->setUpperEnding(QCPLineEnding::esFlatArrow);// 末尾箭头
效果如下: