diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-09-10 16:26:11 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-09-11 10:42:53 +0300 |
commit | d93f5f3b64fdb52cc150232f6b6d80ffdb57db78 (patch) | |
tree | 4a99ecc02c2e885b56abb1082527e482967b84f8 /examples | |
parent | d315336b202ec1c1260f96945a23fde6d2c41b69 (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.cpp | 54 | ||||
-rw-r--r-- | examples/widget/chart.cpp | 4 |
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) |