本文共 2730 字,大约阅读时间需要 9 分钟。
???????????????????????QListWidget????????????Plot?QTableWidget????????????????????????????????????????????????????????????????????????????????PlotCurve??????PlotRaster?????QTableWidget?????????????
??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))); }} ????????????????????????????????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);
??????????????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/