##// END OF EJS Templates
Adding metatype declarations in qml plugin for Qt5...
Adding metatype declarations in qml plugin for Qt5 Not sure why they are needed for Qt5. Definetly NOT needed for Qt4.

File last commit:

r2102:f689de612f59
r2257:b97c592cff78
Show More
mainwidget.cpp
247 lines | 7.7 KiB | text/x-c | CppLexer
Marek Rosa
License added to several files
r1365 /****************************************************************************
**
** Copyright (C) 2012 Digia Plc
** All rights reserved.
** For any questions to Digia, please use contact form at http://qt.digia.com
**
** This file is part of the Qt Commercial Charts Add-on.
**
** $QT_BEGIN_LICENSE$
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia.
**
** If you have questions regarding the use of this file, please use
** contact form at http://qt.digia.com
** $QT_END_LICENSE$
**
****************************************************************************/
sauimone
legend detach example. Bug fixes to legend.
r1263 #include "mainwidget.h"
#include <QChart>
#include <QChartView>
#include <QPushButton>
#include <QLabel>
#include <QDebug>
#include <QBarSet>
sauimone
GroupedBarSeries to BarSeries
r1594 #include <QBarSeries>
sauimone
legend detach example. Bug fixes to legend.
r1263 #include <QLegend>
sauimone
better legend detach layout. updated legend example
r1444 #include <QFormLayout>
sauimone
legend detach example. Bug fixes to legend.
r1263
QTCOMMERCIALCHART_USE_NAMESPACE
MainWidget::MainWidget(QWidget *parent) :
QWidget(parent)
{
sauimone
legend example to documentation. minor legend fixes
r1300 // Create buttons for ui
sauimone
legend detach example. Bug fixes to legend.
r1263 m_buttonLayout = new QGridLayout();
Tero Ahola
Fixed a bug with legend attach requiring a screen resize to update UI
r2034 QPushButton *detachLegendButton = new QPushButton("Toggle attached");
connect(detachLegendButton, SIGNAL(clicked()), this, SLOT(toggleAttached()));
sauimone
legend detach example. Bug fixes to legend.
r1263 m_buttonLayout->addWidget(detachLegendButton, 0, 0);
QPushButton *addSetButton = new QPushButton("add barset");
connect(addSetButton, SIGNAL(clicked()), this, SLOT(addBarset()));
m_buttonLayout->addWidget(addSetButton, 2, 0);
QPushButton *removeBarsetButton = new QPushButton("remove barset");
connect(removeBarsetButton, SIGNAL(clicked()), this, SLOT(removeBarset()));
m_buttonLayout->addWidget(removeBarsetButton, 3, 0);
Tero Ahola
Fixed a bug with legend attach requiring a screen resize to update UI
r2034 QPushButton *alignButton = new QPushButton("Align (Bottom)");
connect(alignButton, SIGNAL(clicked()), this, SLOT(setLegendAlignment()));
m_buttonLayout->addWidget(alignButton, 4, 0);
sauimone
better legend detach layout. updated legend example
r1444
sauimone
legend font fix
r1522 QPushButton *boldButton = new QPushButton("Toggle bold");
connect(boldButton, SIGNAL(clicked()), this, SLOT(toggleBold()));
m_buttonLayout->addWidget(boldButton, 8, 0);
QPushButton *italicButton = new QPushButton("Toggle italic");
connect(italicButton, SIGNAL(clicked()), this, SLOT(toggleItalic()));
m_buttonLayout->addWidget(italicButton, 9, 0);
sauimone
better legend detach layout. updated legend example
r1444 m_legendPosX = new QDoubleSpinBox();
m_legendPosY = new QDoubleSpinBox();
m_legendWidth = new QDoubleSpinBox();
m_legendHeight = new QDoubleSpinBox();
connect(m_legendPosX, SIGNAL(valueChanged(double)), this, SLOT(updateLegendLayout()));
connect(m_legendPosY, SIGNAL(valueChanged(double)), this, SLOT(updateLegendLayout()));
connect(m_legendWidth, SIGNAL(valueChanged(double)), this, SLOT(updateLegendLayout()));
connect(m_legendHeight, SIGNAL(valueChanged(double)), this, SLOT(updateLegendLayout()));
Jani Honkonen
more coding style fixes for examples...
r2102 QFormLayout *legendLayout = new QFormLayout();
Tero Ahola
Fixed a bug with legend attach requiring a screen resize to update UI
r2034 legendLayout->addRow("HPos", m_legendPosX);
legendLayout->addRow("VPos", m_legendPosY);
sauimone
better legend detach layout. updated legend example
r1444 legendLayout->addRow("Width", m_legendWidth);
legendLayout->addRow("Height", m_legendHeight);
m_legendSettings = new QGroupBox("Detached legend");
m_legendSettings->setLayout(legendLayout);
m_buttonLayout->addWidget(m_legendSettings);
m_legendSettings->setVisible(false);
sauimone
legend detach example. Bug fixes to legend.
r1263 // Create chart view with the chart
sauimone
legend example to documentation. minor legend fixes
r1300 m_chart = new QChart();
sauimone
legend detach example. Bug fixes to legend.
r1263 m_chartView = new QChartView(m_chart, this);
sauimone
legend font fix
r1522 // Create spinbox to modify font size
m_fontSize = new QDoubleSpinBox();
m_fontSize->setValue(m_chart->legend()->font().pointSizeF());
connect(m_fontSize, SIGNAL(valueChanged(double)), this, SLOT(fontSizeChanged()));
Jani Honkonen
more coding style fixes for examples...
r2102 QFormLayout *fontLayout = new QFormLayout();
sauimone
legend font fix
r1522 fontLayout->addRow("Legend font size", m_fontSize);
sauimone
legend detach example. Bug fixes to legend.
r1263 // Create layout for grid and detached legend
m_mainLayout = new QGridLayout();
m_mainLayout->addLayout(m_buttonLayout, 0, 0);
Jani Honkonen
coding style fixes for examples
r2098 m_mainLayout->addLayout(fontLayout, 1, 0);
sauimone
legend detach example. Bug fixes to legend.
r1263 m_mainLayout->addWidget(m_chartView, 0, 1, 3, 1);
setLayout(m_mainLayout);
createSeries();
}
void MainWidget::createSeries()
{
sauimone
GroupedBarSeries to BarSeries
r1594 m_series = new QBarSeries();
sauimone
legend detach example. Bug fixes to legend.
r1263 addBarset();
addBarset();
addBarset();
addBarset();
m_chart->addSeries(m_series);
m_chart->setTitle("Legend detach example");
Marek Rosa
Updated spline nad legend example
r1585 m_chart->createDefaultAxes();
sauimone
updated legend documentation
r1447 //![1]
sauimone
legend detach example. Bug fixes to legend.
r1263 m_chart->legend()->setVisible(true);
Tero Ahola
Qml ChartView properties; legend to use Qt alignments
r1357 m_chart->legend()->setAlignment(Qt::AlignBottom);
sauimone
updated legend documentation
r1447 //![1]
sauimone
legend detach example. Bug fixes to legend.
r1263
m_chartView->setRenderHint(QPainter::Antialiasing);
}
sauimone
better legend detach layout. updated legend example
r1444 void MainWidget::showLegendSpinbox()
{
m_legendSettings->setVisible(true);
QRectF chartViewRect = m_chartView->rect();
m_legendPosX->setMinimum(0);
m_legendPosX->setMaximum(chartViewRect.width());
m_legendPosX->setValue(150);
m_legendPosY->setMinimum(0);
m_legendPosY->setMaximum(chartViewRect.height());
m_legendPosY->setValue(150);
m_legendWidth->setMinimum(0);
m_legendWidth->setMaximum(chartViewRect.width());
m_legendWidth->setValue(150);
m_legendHeight->setMinimum(0);
m_legendHeight->setMaximum(chartViewRect.height());
sauimone
fixed legend scrolling in detached mode. updated example
r1446 m_legendHeight->setValue(75);
sauimone
better legend detach layout. updated legend example
r1444 }
void MainWidget::hideLegendSpinbox()
{
m_legendSettings->setVisible(false);
}
Tero Ahola
Fixed a bug with legend attach requiring a screen resize to update UI
r2034 void MainWidget::toggleAttached()
sauimone
legend detach example. Bug fixes to legend.
r1263 {
QLegend *legend = m_chart->legend();
Tero Ahola
Fixed a bug with legend attach requiring a screen resize to update UI
r2034 if (legend->isAttachedToChart()) {
//![2]
legend->detachFromChart();
m_chart->legend()->setBackgroundVisible(true);
Jani Honkonen
coding style fixes for examples
r2098 m_chart->legend()->setBrush(QBrush(QColor(128, 128, 128, 128)));
m_chart->legend()->setPen(QPen(QColor(192, 192, 192, 192)));
Tero Ahola
Fixed a bug with legend attach requiring a screen resize to update UI
r2034 //![2]
showLegendSpinbox();
updateLegendLayout();
} else {
//![3]
legend->attachToChart();
legend->setBackgroundVisible(false);
//![3]
hideLegendSpinbox();
}
sauimone
better legend detach layout. updated legend example
r1444 update();
sauimone
legend detach example. Bug fixes to legend.
r1263 }
void MainWidget::addBarset()
{
sauimone
barsetCount -> count in tests and examples too
r1463 QBarSet *barSet = new QBarSet(QString("set ") + QString::number(m_series->count()));
qreal delta = m_series->count() * 0.1;
sauimone
Removed QPointF from QBarSet
r1580 *barSet << 1 + delta << 2 + delta << 3 + delta << 4 + delta;
sauimone
legend detach example. Bug fixes to legend.
r1263 m_series->append(barSet);
}
void MainWidget::removeBarset()
{
Jani Honkonen
more coding style fixes for examples...
r2102 QList<QBarSet *> sets = m_series->barSets();
sauimone
fixed crash in legend example
r1396 if (sets.count() > 0) {
Jani Honkonen
coding style fixes for examples
r2098 m_series->remove(sets.at(sets.count() - 1));
sauimone
fixed crash in legend example
r1396 }
sauimone
legend detach example. Bug fixes to legend.
r1263 }
sauimone
better legend detach layout. updated legend example
r1444
Tero Ahola
Fixed a bug with legend attach requiring a screen resize to update UI
r2034 void MainWidget::setLegendAlignment()
{
QPushButton *button = qobject_cast<QPushButton *>(sender());
switch (m_chart->legend()->alignment()) {
case Qt::AlignTop:
m_chart->legend()->setAlignment(Qt::AlignLeft);
if (button)
button->setText("Align (Left)");
break;
case Qt::AlignLeft:
m_chart->legend()->setAlignment(Qt::AlignBottom);
if (button)
button->setText("Align (Bottom)");
break;
case Qt::AlignBottom:
m_chart->legend()->setAlignment(Qt::AlignRight);
if (button)
button->setText("Align (Right)");
break;
default:
if (button)
button->setText("Align (Top)");
m_chart->legend()->setAlignment(Qt::AlignTop);
break;
}
sauimone
better legend detach layout. updated legend example
r1444 }
sauimone
legend font fix
r1522 void MainWidget::toggleBold()
{
QFont font = m_chart->legend()->font();
font.setBold(!font.bold());
m_chart->legend()->setFont(font);
}
void MainWidget::toggleItalic()
{
QFont font = m_chart->legend()->font();
font.setItalic(!font.italic());
m_chart->legend()->setFont(font);
}
void MainWidget::fontSizeChanged()
{
QFont font = m_chart->legend()->font();
font.setPointSizeF(m_fontSize->value());
m_chart->legend()->setFont(font);
}
sauimone
better legend detach layout. updated legend example
r1444 void MainWidget::updateLegendLayout()
{
sauimone
updated legend documentation
r1447 //![4]
Jani Honkonen
coding style fixes for examples
r2098 m_chart->legend()->setGeometry(QRectF(m_legendPosX->value(),
m_legendPosY->value(),
m_legendWidth->value(),
m_legendHeight->value()));
sauimone
better legend detach layout. updated legend example
r1444 m_chart->legend()->update();
sauimone
updated legend documentation
r1447 //![4]
sauimone
better legend detach layout. updated legend example
r1444 }