翻譯|使用教程|編輯:鮑佳佳|2021-08-24 10:10:44.290|閱讀 524 次
概述:該示例顯示了不同內置主題的外觀,下面我們一起來看看吧!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
Qt是一個跨平臺框架,通常用作圖形工具包,它不僅創建CLI應用程序中非常有用。而且它也可以在三種主要的臺式機操作系統以及移動操作系統(如Symbian,Nokia Belle,Meego Harmattan,MeeGo或BB10)以及嵌入式設備,Android(Necessitas)和iOS的端口上運行?,F在我們為你提供了免費的試用版。
Qt組件推薦:
該示例顯示了不同內置主題的外觀。此示例顯示了某些受支持圖表類型的不同內置主題的外觀。
要從Qt Creator運行示例,請打開歡迎模式并從示例中選擇示例。有關更多信息,請訪問構建和運行示例。
不同類型的圖表分別生成并添加到布局中。例如,折線圖創建如下。其他圖表類型的創建與此類似。
首先創建一個圖表。
QChart *chart = new QChart(); chart->setTitle("Line chart");
生成一組通用的隨機數據并將其放置在列表中。此列表用于每個圖表類型以將數據添加到圖表系列。對于線系列,創建QLineSeries實例并將其添加到圖表中。
QString name("Series "); int nameIndex = 0; for (const DataList &list : m_dataTable) { QLineSeries *series = new QLineSeries(chart); for (const Data &data : list) series->append(data.first); series->setName(name + QString::number(nameIndex)); nameIndex++; chart->addSeries(series); }
為線系列創建默認軸。我們還根據用于系列的數據范圍指定軸的范圍。
chart->createDefaultAxes(); chart->axes(Qt::Horizontal).first()->setRange(0, m_valueMax); chart->axes(Qt::Vertical).first()->setRange(0, m_valueCount);
我們還想在標簽和 y 軸之間添加更多空間。為此,我們指定了一種向標簽添加空格字符的標簽格式。
// Add space to label to add space between labels and axis QValueAxis *axisY = qobject_cast<QValueAxis*>(chartchart->axes((Qt::Vertical)).first());()); Q_ASSERT(axisY);(axisY); axisY->setLabelFormat(("%.1f ");
最后將折線圖添加到網格布局中。
chartView = new QChartView(createLineChart());createLineChart()); m_ui->gridLayout->addWidget(chartView(chartView, 1, 2);
用戶可以選擇要在示例中使用的內置主題。然后將此主題應用于布局中的所有圖表。
QChart::ChartTheme theme theme = static_cast<QChart::ChartTheme>( m_ui->themeComboBox->itemData(m_ui(m_ui->themeComboBox->currentIndex())()).toInt());()); chartView->chart()()->setTheme(theme);(theme);
為了使結果看起來更和諧,應用程序的背景調色板被自定義以匹配所選主題。該QPalette ::窗口和QPalette :: WindowText角色基于所選主題設置。
QPalette pal = window()()->palette(); (); if (theme (theme == QChart::ChartThemeLight) {) { pal.setColor((QPalette::Window, QRgb(0xf0f0f0)); pal.setColor((QPalette::WindowText, QRgb(0x404044));
在此示例中,還可以查看更改動畫、圖例和抗鋸齒如何影響圖表的外觀。
根據用戶的選擇,在每個圖表上設置使用的動畫類型。圖表中可能沒有動畫,或者有網格軸或系列的動畫,或者兩者都有。
QChart::AnimationOptions options( options( m_ui->animatedComboBox->itemData(m_ui(m_ui->animatedComboBox->currentIndex())()).toInt()); ()); if ((!m_charts.isEmpty() () && m_charts.at((0)->chart()()->animationOptions() () != options) { ) { for ((QChartView *chartView : charts): charts) chartView->chart()()->setAnimationOptions(options);(options); }}
圖表可以用圖例顯示。圖例可以與圖表的不同側對齊。
Qt::Alignment alignment( alignment( m_ui->legendComboBox->itemData(m_ui(m_ui->legendComboBox->currentIndex())()).toInt());()); if ((!alignment) { ) { for ((QChartView *chartView : charts): charts) chartView->chart()()->legend()()->hide();(); } } else { { for ((QChartView *chartView : charts) {: charts) { chartView->chart()()->legend()()->setAlignment(alignment);(alignment); chartView->chart()()->legend()()->show();(); }} }}
用戶還可以查看更改抗鋸齒選項如何更改圖表的外觀??逛忼X根據用戶的選擇進行更新。
bool checked checked = m_ui->antialiasCheckBox->isChecked(); (); for ((QChartView *chart : charts): charts) chart->setRenderHint((QPainter::Antialiasing, checked);checked);
====================================================
想要了解或購買Qt正版授權的朋友,歡迎
Qt技術交流群現已開通,QQ搜索群號“765444821”或者掃描下方二維碼即可加入
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: