summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2013-09-10 16:26:11 +0300
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2013-09-11 10:42:53 +0300
commitd93f5f3b64fdb52cc150232f6b6d80ffdb57db78 (patch)
tree4a99ecc02c2e885b56abb1082527e482967b84f8 /examples
parentd315336b202ec1c1260f96945a23fde6d2c41b69 (diff)
QBarDataProxy now has list of row and column labels
Category axes use those labels if no explicit labels are set to them. + Other misc fixes Task-number: QTRD-2252 Change-Id: Idc15e0cc1cdeb08195b2e2baeead9cfef2533e04 Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'examples')
-rw-r--r--examples/barchart/main.cpp54
-rw-r--r--examples/widget/chart.cpp4
2 files changed, 41 insertions, 17 deletions
diff --git a/examples/barchart/main.cpp b/examples/barchart/main.cpp
index 5fa798fd..0386bd74 100644
--- a/examples/barchart/main.cpp
+++ b/examples/barchart/main.cpp
@@ -28,6 +28,7 @@
#include <QTimer>
#include <QFont>
#include <QDebug>
+#include <QHeaderView>
#define USE_STATIC_DATA
@@ -46,7 +47,8 @@ public:
void changeTheme();
void start();
void selectFromTable(const QPoint &selection);
- void selectedFromTable(int row, int column);
+ void selectedFromTable(int currentRow, int currentColumn, int previousRow, int previousColumn);
+ void fixTableSize();
private:
Q3DBars *m_chart;
@@ -73,18 +75,22 @@ ChartDataGenerator::ChartDataGenerator(Q3DBars *barchart, QTableWidget *tableWid
// and add a small space between the bars
m_chart->setBarSpecs(1.0, QSizeF(0.2, 0.2));
+ // Set bar type to flat pyramids
+ m_chart->setBarType(QDataVis::Pyramids, false);
+
#ifndef USE_STATIC_DATA
// Set up sample space; make it as deep as it's wide
m_chart->setDataWindow(m_rowCount, m_columnCount);
m_tableWidget->setColumnCount(m_columnCount);
-#endif
-
- // Set bar type to flat pyramids
- m_chart->setBarType(QDataVis::Pyramids, false);
-#ifndef USE_STATIC_DATA
// Set selection mode to full
m_chart->setSelectionMode(QDataVis::ModeItemRowAndColumn);
+
+ // Hide axis labels by explicitly setting one empty string as label list
+ m_chart->rowAxis()->setCategoryLabels(QStringList(QString()));
+ m_chart->columnAxis()->setCategoryLabels(QStringList(QString()));
+
+ m_chart->activeDataProxy()->setItemLabelFormat(QStringLiteral("@valueLabel"));
#else
// Set selection mode to zoom row
m_chart->setSelectionMode(QDataVis::ModeSliceRow);
@@ -112,12 +118,17 @@ void ChartDataGenerator::start()
#ifndef USE_STATIC_DATA
m_dataTimer = new QTimer();
m_dataTimer->setTimerType(Qt::CoarseTimer);
- m_dataTimer->setInterval(500);
QObject::connect(m_dataTimer, &QTimer::timeout, this, &ChartDataGenerator::addRow);
- m_dataTimer->start(500);
+ m_dataTimer->start(0);
m_tableWidget->setFixedWidth(m_chart->width());
#else
setupModel();
+ // Table needs to be shown before the size of its headers can be accurately obtained,
+ // so we postpone it a bit
+ m_dataTimer = new QTimer();
+ m_dataTimer->setSingleShot(true);
+ QObject::connect(m_dataTimer, &QTimer::timeout, this, &ChartDataGenerator::fixTableSize);
+ m_dataTimer->start(0);
#endif
}
@@ -142,13 +153,14 @@ void ChartDataGenerator::setupModel()
m_chart->valueAxis()->setTitle("Hours playing banjo");
m_chart->valueAxis()->setSegmentCount(5);
m_chart->valueAxis()->setLabelFormat("%.1f h");
- m_chart->rowAxis()->setCategoryLabels(weeks);
- m_chart->columnAxis()->setCategoryLabels(days);
m_tableWidget->setRowCount(5);
m_tableWidget->setColumnCount(7);
m_tableWidget->setHorizontalHeaderLabels(days);
m_tableWidget->setVerticalHeaderLabels(weeks);
+ m_tableWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+ m_tableWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+ m_tableWidget->setCurrentCell(-1, -1);
for (int week = 0; week < weeks.size(); week++) {
for (int day = 0; day < days.size(); day++) {
@@ -156,7 +168,6 @@ void ChartDataGenerator::setupModel()
m_tableWidget->model()->setData(index, hours[week][day]);
}
}
- m_tableWidget->setFixedWidth(600);
// Set up sample space based on prepared data
m_chart->setDataWindow(weeks.size(), days.size());
@@ -165,6 +176,8 @@ void ChartDataGenerator::setupModel()
void ChartDataGenerator::addRow()
{
m_tableWidget->model()->insertRow(0);
+ if (m_tableWidget->model()->rowCount() > m_rowCount)
+ m_tableWidget->model()->removeRow(m_rowCount);
for (int i = 0; i < m_columnCount; i++) {
QModelIndex index = m_tableWidget->model()->index(0, i);
m_tableWidget->model()->setData(index,
@@ -179,9 +192,22 @@ void ChartDataGenerator::selectFromTable(const QPoint &selection)
m_tableWidget->setCurrentCell(selection.x(), selection.y());
}
-void ChartDataGenerator::selectedFromTable(int row, int column)
+void ChartDataGenerator::selectedFromTable(int currentRow, int currentColumn,
+ int previousRow, int previousColumn)
+{
+ Q_UNUSED(previousRow)
+ Q_UNUSED(previousColumn)
+ m_chart->setSelectedBarPos(QPoint(currentRow, currentColumn));
+}
+
+void ChartDataGenerator::fixTableSize()
{
- m_chart->setSelectedBarPos(QPoint(row, column));
+ int width = m_tableWidget->horizontalHeader()->length();
+ width += m_tableWidget->verticalHeader()->width();
+ m_tableWidget->setFixedWidth(width + 2);
+ int height = m_tableWidget->verticalHeader()->length();
+ height += m_tableWidget->horizontalHeader()->height();
+ m_tableWidget->setFixedHeight(height + 2);
}
int main(int argc, char **argv)
@@ -219,7 +245,7 @@ int main(int argc, char **argv)
QObject::connect(chart, &Q3DBars::selectedBarPosChanged, generator,
&ChartDataGenerator::selectFromTable);
- QObject::connect(tableWidget, &QTableWidget::cellClicked, generator,
+ QObject::connect(tableWidget, &QTableWidget::currentCellChanged, generator,
&ChartDataGenerator::selectedFromTable);
widget->show();
diff --git a/examples/widget/chart.cpp b/examples/widget/chart.cpp
index d124a10b..534b135c 100644
--- a/examples/widget/chart.cpp
+++ b/examples/widget/chart.cpp
@@ -54,10 +54,8 @@ ChartModifier::ChartModifier(Q3DBars *barchart)
m_temperatureAxis->setLabelFormat(QString(QStringLiteral("%d ") + celsiusString));
m_yearAxis->setTitle("Year");
- m_yearAxis->setCategoryLabels(m_years);
m_monthAxis->setTitle("Month");
- m_monthAxis->setCategoryLabels(m_months);
m_chart->addAxis(m_temperatureAxis);
m_chart->addAxis(m_yearAxis);
@@ -124,7 +122,7 @@ void ChartModifier::resetTemperatureData()
}
// Add data to chart (chart assumes ownership)
- m_temperatureData->resetArray(dataSet);
+ m_temperatureData->resetArray(dataSet, m_years, m_months);
}
void ChartModifier::changeStyle(int style)