diff --git a/examples/HeadersFooters/Advanced/CMakeLists.txt b/examples/HeadersFooters/Advanced/CMakeLists.txt --- a/examples/HeadersFooters/Advanced/CMakeLists.txt +++ b/examples/HeadersFooters/Advanced/CMakeLists.txt @@ -14,4 +14,4 @@ add_executable(HeadersFootersAdvanced ${HeadersFootersAdvanced_SRCS}) -target_link_libraries(HeadersFootersAdvanced testtools KChart Qt5::Widgets) +target_link_libraries(HeadersFootersAdvanced testtools KChart Qt5::Widgets Qt5::PrintSupport) diff --git a/examples/HeadersFooters/Advanced/mainwindow.h b/examples/HeadersFooters/Advanced/mainwindow.h --- a/examples/HeadersFooters/Advanced/mainwindow.h +++ b/examples/HeadersFooters/Advanced/mainwindow.h @@ -26,6 +26,8 @@ #include "ui_mainwindow.h" #include "ui_addheaderdialog.h" #include +#include +#include namespace KChart { class Chart; @@ -41,14 +43,19 @@ MainWindow( QWidget* parent = nullptr ); private slots: + void on_defaultButton_clicked(); + void on_printButton_clicked(); void on_addHeaderPB_clicked(); void on_editHeaderPB_clicked(); void on_removeHeaderPB_clicked(); void on_headersTV_itemSelectionChanged(); private: void setupAddHeaderDialog( QDialog* dlg, Ui::AddHeaderDialog& conf ) const; + void addHeaderFooter( const QString &text, + KChart::HeaderFooter::HeaderFooterType type, + KChart::Position position ) const; KChart::Chart* m_chart; TableModel m_model; diff --git a/examples/HeadersFooters/Advanced/mainwindow.cpp b/examples/HeadersFooters/Advanced/mainwindow.cpp --- a/examples/HeadersFooters/Advanced/mainwindow.cpp +++ b/examples/HeadersFooters/Advanced/mainwindow.cpp @@ -20,15 +20,16 @@ #include "mainwindow.h" #include -#include -#include #include #include #include #include #include #include #include +#include +#include +#include class HeaderItem : public QTreeWidgetItem { @@ -61,6 +62,28 @@ m_chart->update(); } +void MainWindow::on_defaultButton_clicked() +{ + addHeaderFooter( tr("header west"), KChart::HeaderFooter::Header, KChart::Position::West); + addHeaderFooter( tr("header north"), KChart::HeaderFooter::Header, KChart::Position::North); + addHeaderFooter( tr("header south"), KChart::HeaderFooter::Header, KChart::Position::South); + addHeaderFooter( tr("header east"), KChart::HeaderFooter::Header, KChart::Position::East); + addHeaderFooter( tr("header center"), KChart::HeaderFooter::Header, KChart::Position::Center); + addHeaderFooter( tr("header north west"), KChart::HeaderFooter::Header, KChart::Position::NorthWest); + addHeaderFooter( tr("header north east"), KChart::HeaderFooter::Header, KChart::Position::NorthEast); + addHeaderFooter( tr("header south west"), KChart::HeaderFooter::Header, KChart::Position::SouthWest); + addHeaderFooter( tr("header south east"), KChart::HeaderFooter::Header, KChart::Position::SouthEast); + + addHeaderFooter( tr("footer west"), KChart::HeaderFooter::Footer, KChart::Position::West); + addHeaderFooter( tr("footer north"), KChart::HeaderFooter::Footer, KChart::Position::North); + addHeaderFooter( tr("footer south"), KChart::HeaderFooter::Footer, KChart::Position::South); + addHeaderFooter( tr("footer east"), KChart::HeaderFooter::Footer, KChart::Position::East); + addHeaderFooter( tr("footer center"), KChart::HeaderFooter::Footer, KChart::Position::Center); + addHeaderFooter( tr("footer north west"), KChart::HeaderFooter::Footer, KChart::Position::NorthWest); + addHeaderFooter( tr("footer north east"), KChart::HeaderFooter::Footer, KChart::Position::NorthEast); + addHeaderFooter( tr("footer south west"), KChart::HeaderFooter::Footer, KChart::Position::SouthWest); + addHeaderFooter( tr("footer south east"), KChart::HeaderFooter::Footer, KChart::Position::SouthEast); +} void MainWindow::setupAddHeaderDialog( QDialog* dlg, Ui::AddHeaderDialog& conf ) const @@ -76,6 +99,36 @@ conf.positionCO->addItem( labels[i], names[i] ); } +void MainWindow::addHeaderFooter( const QString &text, + KChart::HeaderFooter::HeaderFooterType type, + KChart::Position position ) const +{ + KChart::HeaderFooter* headerFooter = new KChart::HeaderFooter( m_chart ); + m_chart->addHeaderFooter( headerFooter ); + headerFooter->setText( text ); + KChart::TextAttributes attrs( headerFooter->textAttributes() ); + attrs.setPen( QPen( Qt::red ) ); + headerFooter->setTextAttributes( attrs ); + headerFooter->setType( type ); + headerFooter->setPosition( position ); + + HeaderItem* newItem = new HeaderItem( headerFooter, headersTV ); + newItem->setText( 0, headerFooter->text() ); + newItem->setText( 1, type == KChart::HeaderFooter::Header ? + tr( "Header" ) : tr( "Footer" ) ); + newItem->setText( 2, headerFooter->position().name() ); + m_chart->update(); +} + +void MainWindow::on_printButton_clicked() +{ + static QPrinter printer; + QPrintDialog dialog(&printer); + if (!dialog.exec()) + return; + QPainter painter(&printer); + m_chart->paint(&painter, painter.window()); +} void MainWindow::on_addHeaderPB_clicked() { @@ -85,24 +138,10 @@ conf.typeCO->setCurrentIndex( 0 ); // let us start with "Header" conf.positionCO->setCurrentIndex( 0 ); if ( dlg.exec() ) { - KChart::HeaderFooter* headerFooter = new KChart::HeaderFooter( m_chart ); - m_chart->addHeaderFooter( headerFooter ); - headerFooter->setText( conf.textED->text() ); - KChart::TextAttributes attrs( headerFooter->textAttributes() ); - attrs.setPen( QPen( Qt::red ) ); - headerFooter->setTextAttributes( attrs ); - headerFooter->setType( conf.typeCO->currentText() == "Header" ? - KChart::HeaderFooter::Header : KChart::HeaderFooter::Footer ); - headerFooter->setPosition( - KChart::Position::fromName( conf.positionCO->itemData( - conf.positionCO->currentIndex() ).toByteArray() ) ); - - HeaderItem* newItem = new HeaderItem( headerFooter, headersTV ); - newItem->setText( 0, conf.textED->text() ); - newItem->setText( 1, headerFooter->type() == KChart::HeaderFooter::Header ? - tr( "Header" ) : tr( "Footer" ) ); - newItem->setText( 2, conf.positionCO->currentText() ); - m_chart->update(); + addHeaderFooter( conf.textED->text(), + conf.typeCO->currentText() == "Header" ? KChart::HeaderFooter::Header : KChart::HeaderFooter::Footer, + KChart::Position::fromName( conf.positionCO->itemData(conf.positionCO->currentIndex() ).toByteArray() ) + ); } } diff --git a/examples/HeadersFooters/Advanced/mainwindow.ui b/examples/HeadersFooters/Advanced/mainwindow.ui --- a/examples/HeadersFooters/Advanced/mainwindow.ui +++ b/examples/HeadersFooters/Advanced/mainwindow.ui @@ -1,91 +1,130 @@ - - - - + + MainWindow - - + + 0 0 885 597 - + KD Chart 2 example: Headers and Footers - - + + + 6 + + 9 - - 6 + + 9 + + + 9 + + + 9 - - + + Qt::Horizontal - - + + Qt::Vertical - - + + Headers and Footers - - + + + 6 + + 9 - - 6 + + 9 + + + 9 + + + 9 - + - + Text - + Type - + Position - - + + + 6 + + 0 - - 6 + + 0 + + + 0 + + + 0 - - + + + Print + + + + + + + Add defaults + + + + + + &Add... - - + + Edit... - - + + &Remove @@ -95,21 +134,18 @@ - - + + QFrame::StyledPanel - + QFrame::Raised - - - - +