QCustomPlot Discussion and Comments

Qcustomplot in Ticker tabsReturn to overview

Hi,

I tried to merge Qcustomplot graph in Ticker tabs. (The window tabs that can fit in many other operations.) Has anyone tried working on it?

Here is the problem i encountered.
Look at undefined identifier

CPP file

#include <QtWidgets>
#include <QVBoxLayout>

#include "tabdialog.h"

#include "ui_tabdialog.h"
#include <QDebug>
#include <QDesktopWidget>
#include <QScreen>
#include <QMessageBox>
#include <QMetaEnum>

#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
#include <QtCharts/QAreaSeries>


TabDialog::TabDialog(const QString &fileName, QWidget *parent)
: QDialog(parent)
{
QFileInfo fileInfo(fileName);

tabWidget = new QTabWidget;
tabWidget->addTab(new GeneralTab(fileInfo), tr("General"));
tabWidget->addTab(new PermissionsTab(fileInfo), tr("Permissions"));
tabWidget->addTab(new ApplicationsTab(fileInfo), tr("Applications"));
tabWidget->addTab(new TestingSplitter(fileInfo), tr("Splitter"));
tabWidget->addTab(new TestingGraph(fileInfo), tr("Graph"));

buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok
| QDialogButtonBox::Cancel);

connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);

QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(tabWidget);
mainLayout->addWidget(buttonBox);
setLayout(mainLayout);

setWindowTitle(tr("Tab Dialog"));
}

GeneralTab::GeneralTab(const QFileInfo &fileInfo, QWidget *parent)
: QWidget(parent)
{
QLabel *fileNameLabel = new QLabel(tr("File Name:"));
QLineEdit *fileNameEdit = new QLineEdit(fileInfo.fileName());

QLabel *pathLabel = new QLabel(tr("Path:"));
QLabel *pathValueLabel = new QLabel(fileInfo.absoluteFilePath());
pathValueLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken);

QLabel *sizeLabel = new QLabel(tr("Size:"));
qlonglong size = fileInfo.size() / 1024;
QLabel *sizeValueLabel = new QLabel(tr("%1 K").arg(size));
sizeValueLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken);

QLabel *lastReadLabel = new QLabel(tr("Last Read:"));
QLabel *lastReadValueLabel = new QLabel(fileInfo.lastRead().toString());
lastReadValueLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken);

QLabel *lastModLabel = new QLabel(tr("Last Modified:"));
QLabel *lastModValueLabel = new QLabel(fileInfo.lastModified().toString());
lastModValueLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken);

QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(fileNameLabel);
mainLayout->addWidget(fileNameEdit);
mainLayout->addWidget(pathLabel);
mainLayout->addWidget(pathValueLabel);
mainLayout->addWidget(sizeLabel);
mainLayout->addWidget(sizeValueLabel);
mainLayout->addWidget(lastReadLabel);
mainLayout->addWidget(lastReadValueLabel);
mainLayout->addWidget(lastModLabel);
mainLayout->addWidget(lastModValueLabel);
mainLayout->addStretch(1);
setLayout(mainLayout);
}

PermissionsTab::PermissionsTab(const QFileInfo &fileInfo, QWidget *parent)
: QWidget(parent)
{
QGroupBox *permissionsGroup = new QGroupBox(tr("Permissions"));

QCheckBox *readable = new QCheckBox(tr("Readable"));
if (fileInfo.isReadable())
readable->setChecked(true);

QCheckBox *writable = new QCheckBox(tr("Writable"));
if (fileInfo.isWritable())
writable->setChecked(true);

QCheckBox *executable = new QCheckBox(tr("Executable"));
if (fileInfo.isExecutable())
executable->setChecked(true);

QGroupBox *ownerGroup = new QGroupBox(tr("Ownership"));

QLabel *ownerLabel = new QLabel(tr("Owner"));
QLabel *ownerValueLabel = new QLabel(fileInfo.owner());
ownerValueLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken);

QLabel *groupLabel = new QLabel(tr("Group"));
QLabel *groupValueLabel = new QLabel(fileInfo.group());
groupValueLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken);

QVBoxLayout *permissionsLayout = new QVBoxLayout;
permissionsLayout->addWidget(readable);
permissionsLayout->addWidget(writable);
permissionsLayout->addWidget(executable);
permissionsGroup->setLayout(permissionsLayout);

QVBoxLayout *ownerLayout = new QVBoxLayout;
ownerLayout->addWidget(ownerLabel);
ownerLayout->addWidget(ownerValueLabel);
ownerLayout->addWidget(groupLabel);
ownerLayout->addWidget(groupValueLabel);
ownerGroup->setLayout(ownerLayout);

QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(permissionsGroup);
mainLayout->addWidget(ownerGroup);
mainLayout->addStretch(1);
setLayout(mainLayout);
}

ApplicationsTab::ApplicationsTab(const QFileInfo &fileInfo, QWidget *parent)
: QWidget(parent)
{
QLabel *topLabel = new QLabel(tr("Open with:"));

QListWidget *applicationsListBox = new QListWidget;
QStringList applications;

for (int i = 1; i <= 30; ++i)
applications.append(tr("Application %1").arg(i));
applicationsListBox->insertItems(0, applications);

QCheckBox *alwaysCheckBox;

if (fileInfo.suffix().isEmpty())
alwaysCheckBox = new QCheckBox(tr("Always use this application to "
"open this type of file"));
else
alwaysCheckBox = new QCheckBox(tr("Always use this application to "
"open files with the extension '%1'").arg(fileInfo.suffix()));

QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(topLabel);
layout->addWidget(applicationsListBox);
layout->addWidget(alwaysCheckBox);
setLayout(layout);
}

//Add-on
TestingSplitter::TestingSplitter(const QFileInfo &fileInfo, QWidget *parent)
: QWidget(parent)
{
QHBoxLayout *hbox = new QHBoxLayout(this);

QFrame *topleft = new QFrame(this);
topleft->setFrameShape(QFrame::StyledPanel);
topleft->setStyleSheet("background-color:black;"); //add-on color

QFrame *topright = new QFrame(this);
topright->setFrameShape(QFrame::StyledPanel);
topright->setStyleSheet("background-color:red;"); //add-on color

QSplitter *splitter1 = new QSplitter(Qt::Horizontal, this);
splitter1->addWidget(topleft);
splitter1->addWidget(topright);

hbox->addWidget(splitter1);

QHBoxLayout *h2box = new QHBoxLayout(this);

QFrame *bottomleft = new QFrame(this);
bottomleft->setFrameShape(QFrame::StyledPanel);
bottomleft->setStyleSheet("background-color:blue;"); //add-on color

QFrame *bottomright = new QFrame(this);
bottomright->setFrameShape(QFrame::StyledPanel);
bottomright->setStyleSheet("background-color:green;"); //add-on color

QSplitter *splitter2 = new QSplitter(Qt::Horizontal, this);

splitter2->addWidget(splitter1);
splitter2->addWidget(bottomleft);
splitter2->addWidget(bottomright);

hbox->addWidget(splitter2);

QHBoxLayout *h3box = new QHBoxLayout(this);

QSplitter *splitter3 = new QSplitter(Qt::Vertical, this);

splitter3->addWidget(splitter1);
splitter3->addWidget(splitter2);


hbox->addWidget(splitter3);

QPixmap pixmap("C:/Users/Common/Desktop/downloadsplash.jpg");
QLabel *label = new QLabel(this);
label->setPixmap(pixmap);
hbox->addWidget(label, 0, Qt::AlignCenter);

}

//Add-on
TestingGraph::TestingGraph(const QFileInfo &fileInfo, QWidget *parent)
{

QLineSeries *series = new QLineSeries(); //undefined identifier

series->append(0, 6);
series->append(2, 4);
series->append(3, 8);
series->append(7, 4);
series->append(10, 5);
*series << QPointF(11, 1) << QPointF(13, 3) << QPointF(17, 6) << QPointF(18, 3) << QPointF(20, 2);

QChart *chart = new QChart(); //undefined identifier
chart->legend()->hide();
chart->addSeries(series);
chart->createDefaultAxes();
chart->setTitle("Simple line chart example");

QChartView *chartView = new QChartView(chart); //undefined identifier
chartView->setRenderHint(QPainter::Antialiasing);

QMainWindow window;
window.setCentralWidget(chartView);
window.resize(400, 300);
window.show();
}

Look at "TestingGraph" class

Header file

#ifndef TABDIALOG_H
#define TABDIALOG_H

#include "qcustomplot.h"
#include <QDialog>

//class QDialogButtonBox;
//class QFileInfo;
//class QTabWidget;

#include <QDialogButtonBox>
#include <QFileInfo>
#include <QTabWidget>


#include <QMainWindow>
#include <QTimer>

class GeneralTab : public QWidget
{
Q_OBJECT

public:
explicit GeneralTab(const QFileInfo &fileInfo, QWidget *parent = 0);
};

class PermissionsTab : public QWidget
{
Q_OBJECT

public:
explicit PermissionsTab(const QFileInfo &fileInfo, QWidget *parent = 0);
};

class ApplicationsTab : public QWidget
{
Q_OBJECT

public:
explicit ApplicationsTab(const QFileInfo &fileInfo, QWidget *parent = 0);
};

class TestingSplitter : public QWidget //ADD-ON
{
Q_OBJECT

public:
explicit TestingSplitter(const QFileInfo &fileInfo, QWidget *parent = 0);
};

class TestingGraph : public QWidget //ADD-ON
{
Q_OBJECT
public:
explicit TestingGraph(const QFileInfo &fileInfo, QWidget *parent = 0) : QWidget(parent)

};

class TabDialog : public QDialog
{
Q_OBJECT

public:
explicit TabDialog(const QString &fileName, QWidget *parent = 0);

private:
QTabWidget *tabWidget;
QDialogButtonBox *buttonBox;
};

#endif