今天因為需要在QT底下繪制一個柱狀圖,由於不想自己麻煩重載一個QWidget所以就在網上搜索到了QCustomPlot,按照這個項目主頁的圖像顯示它是可以滿足我的要求。
首先來看一下效果圖(繪制風格,畫刷,顏色都使用的默認的)
先將下載來的QCustomPlot.cpp QCustomPlot.h拷貝到你的工程裡
首先在QtCreator中拖出一個QWidget,然後提升為QCustomPlot類。
假設該成員變量為widget.
柱狀圖我們需要兩個數據,一個是每個柱的相應標簽(QString),一個就是其值(double)
void MainWindow::init_ui()
{
QVector<QString> labels(5);
QVector<double> values(5);
for(int i=0;i<5;++i)
labels[i]=QString("MAC")+('0'+i);
values[0]=(10.05);
values[1]=23;
values[2]=12;
values[3]=19.3;
values[4]=20;
我們使用QCustomPlot提供的QCPBars來表示柱狀圖
QCPBars* bars=new QCPBars(this->ui->widget->xAxis,this->ui->widget->yAxis);
QVector<double> index(5);
for(int i=0;i<5;++i)
index[i]=i;
bars->setData(index,values);
QCPBars的setData()的兩個參數也是兩個向量,只不過第一個向量index的每個元素表示“第幾個柱子”,然後後面對應的values表示對應“柱子的值”
添加完了繪制的柱狀圖,接下來添加標簽,要想完全自己定義標簽,需要先執行以下代碼關閉默認的底部標簽自動生成
this->ui->widget->xAxis->setAutoTicks(false);
this->ui->widget->xAxis->setAutoTickLabels(false);
this->ui->widget->xAxis->setAutoTickStep(false);
先將bars添加到widget上吧,然後自動調整下坐標系
this->ui->widget->addPlottable(bars);
this->ui->widget->rescaleAxes();
接下來我們要生成我們標簽的位置坐標,有個公式計算,其生成的向量 coor裡面就對應了我的labels的坐標,注意這個坐標不是屏幕像素坐標,而是它這個坐標系的坐標,如果不是很明白就把上面的那三個false改為true看下它默認的坐標。
double wid=this->ui->widget->xAxis->range().upper-this->ui->widget->xAxis->range().lower;
double cl=bars->width()+(1.0*wid-bars->width()*5)/4;
QVector<double> coor;
for(int i=0;i<5;++i)
coor.append(this->ui->widget->xAxis->range().lower+i*cl+bars->width()/2);
this->ui->widget->xAxis->setTickVector(coor);
this->ui->widget->xAxis->setTickVectorLabels(labels);
最後replot一下
this->ui->widget->replot();
}
然後就完工了
在MainWindow::MainWindow最後面加上一句
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->init_ui();
}
Ubuntu 環境下Gtk與QT編譯環境安裝與配置 http://www.linuxidc.com/Linux/2013-08/88539.htm
Linux系統下QT環境搭建 http://www.linuxidc.com/Linux/2013-07/87576.htm
Ubuntu下QT控制台程序無法運行的解決方案以及XTerm的配置方法 http://www.linuxidc.com/Linux/2013-06/86244.htm
Ubuntu 10.04下QT4.7.4移植詳解 http://www.linuxidc.com/Linux/2013-01/77930.htm
Ubuntu 14.04下安裝部署Qt5開發環境 http://www.linuxidc.com/Linux/2014-05/101774.htm
Qt 的詳細介紹:請點這裡
Qt 的下載地址:請點這裡