博客
关于我
Qt之动态换图
阅读量:97 次
发布时间:2019-02-26

本文共 2730 字,大约阅读时间需要 9 分钟。

??????????????

????

???????????????????????QListWidget????????????Plot?QTableWidget????????????????????????????????????????????????????????????????????????????????PlotCurve??????PlotRaster?????QTableWidget?????????????

???????

1. UI??

??Qt Designer??????????QListWidget??????QFrame????QListWidget???CustomListWidget???????????????mousePressEvent?mouseMoveEvent??????QFrame????QuadSplitter????????????????QWidget??QuadSplitter?

?mainwindow.h????

static const int s_iWidgetsNumber = 4;  // ??????????
QWidget * m_pShowWidgets[2][2]; // ???????????

??CreateCharts???

void MainWindow::CreateCharts()
{
for (int i = 0; i < s_iWidgetsNumber; i++)
{
// ????
m_pShowWidgets[i/2][i%2] = new Plot;
ui->frameDisplay->addWidget(m_pShowWidgets[i/2][i%2], i/2, i%2);
connect(m_pShowWidgets[i/2][i%2], SIGNAL(FullScreenToggle(QWidget*, bool)), this, SLOT(OnToggleSize(QWidget*, bool)));
connect(m_pShowWidgets[i/2][i%2], SIGNAL(DragComplete(QWidget*, QString)), this, SLOT(OnDragComplete(QWidget*, QString)));
}
}

2. ??????

????????????????????????????????QWT?????Plot?????PlotCurve?PlotRaster?????????PlotTable????PIMP???Pointer to Implementation???CustomTableWidget?????

Plot????????????????

signals:
void FullScreenToggle(QWidget* pWidget, bool bFullScreen);
void DragComplete(QWidget* pWidget, QString strTestItem);
events:
void mouseDoubleClickEvent(QMouseEvent *event);
void dragEnterEvent(QDragEnterEvent *event);
void dropEvent(QDropEvent *event);

3. ??????????

??????????????CTestItem???QObject????Q_OBJECT????????QPointer?????????????????????

????OnDragComplete?

void MainWindow::OnDragComplete(QWidget *pWidget, QString itemName)
{
for (int i = 0; i < s_iWidgetsNumber; ++i)
{
if (pWidget == (m_pShowWidgets[i/2][i%2]))
{
m_pTestItems[i/2][i%2] = CRuntimeClass::LoadObject(itemName.toStdWString().c_str(), &m_pShowWidgets[i/2][i%2]);
if (m_pShowWidgets[i/2][i%2]->parentWidget() != ui->frameDisplay)
{
ui->frameDisplay->addWidget(m_pShowWidgets[i/2][i%2], i/2, i%2);
connect(m_pShowWidgets[i/2][i%2], SIGNAL(FullScreenToggle(QWidget*, bool)), this, SLOT(OnToggleSize(QWidget*, bool)));
connect(m_pShowWidgets[i/2][i%2], SIGNAL(DragComplete(QWidget*, QString)), this, SLOT(OnDragComplete(QWidget*, QString)));
}
}
}
}

????????????????????CTestItem?????????????????????????????

if (!(m_pShowWidget = qobject_cast
(*ppWidget)))
{
qDebug("qobject_cast to PlotCurve failed");
delete(*ppWidget);
*ppWidget = NULL;
*ppWidget = new PlotCurve;
}

??

??????????????????????????????????????????????????????????????QWT????????????????

转载地址:http://qkqu.baihongyu.com/

你可能感兴趣的文章
net包之IPConn
查看>>
Net操作配置文件(Web.config|App.config)通用类
查看>>
Neutron系列 : Neutron OVS OpenFlow 流表 和 L2 Population(7)
查看>>
New Relic——手机应用app开发达人的福利立即就到啦!
查看>>
NFinal学习笔记 02—NFinalBuild
查看>>
NFS
查看>>
NFS Server及Client配置与挂载详解
查看>>
NFS共享文件系统搭建
查看>>
nfs复习
查看>>
NFS安装配置
查看>>
NFS的安装以及windows/linux挂载linux网络文件系统NFS
查看>>
NFS的常用挂载参数
查看>>
NFS网络文件系统
查看>>
nft文件传输_利用remoting实现文件传输-.NET教程,远程及网络应用
查看>>
NFV商用可行新华三vBRAS方案实践验证
查看>>
ng build --aot --prod生成文件报错
查看>>
ng 指令的自定义、使用
查看>>
nghttp3使用指南
查看>>
Nginx
查看>>
nginx + etcd 动态负载均衡实践(三)—— 基于nginx-upsync-module实现
查看>>