Qt工作笔记-关于各种QGraphics中item的坐标分析(如QGraphicsLineItem)【天坑】
生活随笔
收集整理的這篇文章主要介紹了
Qt工作笔记-关于各种QGraphics中item的坐标分析(如QGraphicsLineItem)【天坑】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
程序運行截圖如下:
只是隨便看看,大家不要當一回事,
下面是源碼:
widget.h
#ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QVector>class QGraphicsScene; class QGraphicsItem;namespace Ui { class Widget; }class Widget : public QWidget {Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();private:Ui::Widget *ui;QGraphicsScene *m_scene;QVector<QGraphicsItem*> m_graphicVec; };#endif // WIDGET_Hmain.cpp
#include "widget.h" #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); }widget.cpp
#include "widget.h" #include "ui_widget.h" #include <QGraphicsLineItem> #include <QDebug>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this);m_scene=new QGraphicsScene;for(int i=0;i<10;i++){QGraphicsLineItem *item=new QGraphicsLineItem;item->setLine(i*30,i*50,i*70,i*90);item->setPen(QPen(Qt::blue,3));m_scene->addItem(item);m_graphicVec.append(item);}ui->graphicsView->setScene(m_scene);//獲取坐標for(int i=0;i<m_graphicVec.size();i++){qDebug()<<m_graphicVec[i]->scenePos();qDebug()<<((QGraphicsLineItem*)m_graphicVec[i])->line().p1()<<" "<<((QGraphicsLineItem*)m_graphicVec[i])->line().p2();}}Widget::~Widget() {delete ui; }下面的截圖才是關鍵:
這個輸出對應的代碼是:
qDebug()<<m_graphicVec[i]->scenePos(); qDebug()<<((QGraphicsLineItem*)m_graphicVec[i])->line().p1()<<" "<<((QGraphicsLineItem*)m_graphicVec[i])->line().p2();現在問題來了!!!
為什么
m_graphicVec[i]->scenePos();
這玩意輸出的竟然都是0,0
而他里面的line()是有值的。
這里疑惑就在于m_graphicVec[i]->scenePos();
這是官方給出的解釋:
看了后感覺說了和沒說一樣,但代碼中,只要加上這一句,這個屬性就有值了!
item->setPos(1000,1000);然并卵,他的圖像并沒有改變(他的圖像是line)
所有有以下的結論,但使用了
#include <QGraphicsLineItem> #include <QGraphicsRectItem> #include <QGraphicsEllipseItem>
類似的這些類后,
他的關鍵坐標其實應該是他set的東西,比如setline,他在場景中的坐標就是line().XXXX函數。
總結
以上是生活随笔為你收集整理的Qt工作笔记-关于各种QGraphics中item的坐标分析(如QGraphicsLineItem)【天坑】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DVWA文件上传high级文件上传漏洞
- 下一篇: Linux学习笔记-配置SAMBA服务