ceiwei |
2017-02-06 14:16 |
以下Qt程序显示出来的结果为何坐标是负值?
[attachment=16404] 关键代码是: painter.drawText(20,1*50,tr("%1").arg((1*50)));
painter.drawText(20,2*50,tr("%1").arg((2*50))) 按道理i增加了,应该是在更高的位置显示出来,而这里的位置更低;所有代码是:
#include "pieview.h" #include <QPainter>
PieView::PieView(QWidget *parent) : QAbstractItemView(parent) { }
void PieView::paintEvent(QPaintEvent *) { QPainter painter(viewport()); painter.setPen(Qt::black); int x0=40; int y0=250; //y坐标轴 painter.drawLine(x0,y0,40,30); painter.drawLine(38,32,40,30); painter.drawLine(40,30,42,32); painter.drawText(20,30,tr("销售数量")); painter.drawText(20,1*50,tr("%1").arg((1*50))); painter.drawText(20,2*50,tr("%1").arg((2*50)));
//x 坐标轴 painter.drawLine(x0,y0,540,250); painter.drawLine(538,248,540,250); painter.drawLine(540,250,538,252); painter.drawText(545,250,tr("品牌"));
int pos=x0+20; int row; for(row=0;row<model()->rowCount(rootIndex());row++) { QModelIndex index=model()->index(row,0,rootIndex()); QString dep=model()->data(index).toString();
painter.drawText(pos,y0+20,dep); pos+=50; } int posN=x0+20; for(row=0;row<model()->rowCount(rootIndex());row++) { QModelIndex index=model()->index(row,1,rootIndex()); int sell=model()->data(index).toDouble();
int width=10; QModelIndex colorIndex = model()->index(row,0,rootIndex()); QColor color = QColor(model()->data(colorIndex,Qt::DecorationRole).toString()); if(selections->isSelected(index)) painter.setBrush(QBrush(color,Qt::Dense3Pattern)); else painter.setBrush(QBrush(color));
painter.drawRect(QRect(posN,y0-sell*10,width,sell*10)); QRegion regionM(posN,y0-sell*10,width,sell*10); RegionList<<regionM;
posN+=50; } }
void PieView::setSelectionModel(QItemSelectionModel *selectionModel) { selections = selectionModel; }
QRegion PieView::itemRegion(QModelIndex index) { QRegion region; if (index.column() == 1) // 销售数量 region = RegionList[index.row()]; return region; }
QModelIndex PieView::indexAt(const QPoint &point) const { QPoint newPoint(point.x(),point.y()); QRegion region; foreach(region,RegionList) // 销售数量 列 { if (region.contains(newPoint)) { int row = RegionList.indexOf(region); QModelIndex index = model()->index(row,1,rootIndex()); return index; } } return QModelIndex(); }
QRect PieView::visualRect(const QModelIndex &index) const{} void PieView::scrollTo(const QModelIndex &index, ScrollHint hint){} QModelIndex PieView::moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers){} int PieView::horizontalOffset()const{} int PieView::verticalOffset()const{} bool PieView::isIndexHidden(const QModelIndex &index) const{} void PieView::setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command){} QRegion PieView::visualRegionForSelection(const QItemSelection &selection) const{}
|
|