我是小白,之前沒有用過QT,現在要在前人的專案上增加界面,有點無從下手

之前的代碼只能獲取點的資訊,現在想要獲取一個十字上點的資訊,有大佬指點一下嗎,是要通過拖控制元件實作嗎
uj5u.com熱心網友回復:
證券相關的軟體?uj5u.com熱心網友回復:
不是,是測溫軟體,圖片通過相機實時顯示到軟體上,目前可以獲取點的實時溫度資訊,現在要實時獲取十字上的點的溫度資訊
uj5u.com熱心網友回復:
聽同事們說,需要添加圖層的,沒有做過界面,只能幫到這里了
uj5u.com熱心網友回復:
證券相關的軟體?
不是,是測溫軟體,圖片通過相機實時顯示到軟體上,目前可以獲取點的實時溫度資訊,現在要實時獲取十字上的點的溫度資訊
聽同事們說,需要添加圖層的,沒有做過界面,只能幫到這里了
嗯嗯好的謝謝!
uj5u.com熱心網友回復:
添加了圖層,但是下邊的圖層的功能被覆寫了,誰放在下邊,誰的功能就被覆寫,難道所有的功能只能在一個圖層上實作嗎1551
uj5u.com熱心網友回復:
如果只是畫十字,可以參考如下:#ifndef MYGRAPHICSVIEW_H
#define MYGRAPHICSVIEW_H
#include <QGraphicsView>
class MyGraphicsView : public QGraphicsView
{
public:
MyGraphicsView(QGraphicsScene * scene, QWidget * parent = nullptr);
protected:
void leaveEvent(QEvent *event) Q_DECL_OVERRIDE;
void enterEvent(QEvent *event) Q_DECL_OVERRIDE;
void mouseMoveEvent(QMouseEvent * event) Q_DECL_OVERRIDE;
private:
QPoint m_lastMousePos;
QGraphicsLineItem *m_HLineItem;
QGraphicsLineItem *m_VLineItem;
};
#endif // MYGRAPHICSVIEW_H
#include "mygraphicsview.h"
#include <QMouseEvent>
#include <QGraphicsLineItem>
#include <QScrollBar>
MyGraphicsView::MyGraphicsView(QGraphicsScene * scene, QWidget * parent)
: QGraphicsView(scene, parent)
, m_HLineItem(nullptr)
, m_VLineItem(nullptr)
{
setMouseTracking(true);
verticalScrollBar()->setVisible(false);
horizontalScrollBar()->setVisible(false);
}
void MyGraphicsView::mouseMoveEvent(QMouseEvent * event)
{
QPointF pos = event->pos() - m_lastMousePos;
if (m_HLineItem != nullptr){
m_HLineItem->moveBy(0, pos.y());
}
if (m_VLineItem != nullptr){
m_VLineItem->moveBy(pos.x(), 0);
}
m_lastMousePos = event->pos();
}
void MyGraphicsView::enterEvent(QEvent *event)
{
QRect rect = this->rect();
QEnterEvent *enterEvent = (QEnterEvent *)event;
m_lastMousePos = enterEvent->pos();
m_HLineItem = scene()->addLine(0, enterEvent->y(), rect.right(), enterEvent->y());
m_VLineItem = scene()->addLine(enterEvent->x(), 0, enterEvent->x(), rect.bottom());
}
void MyGraphicsView::leaveEvent(QEvent *event)
{
Q_UNUSED(event);
if (m_HLineItem != nullptr){
scene()->removeItem((QGraphicsItem*)m_HLineItem);
delete m_HLineItem;
m_HLineItem = nullptr;
}
if (m_VLineItem != nullptr){
scene()->removeItem((QGraphicsItem*)m_VLineItem);
delete m_VLineItem;
m_VLineItem = nullptr;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/8159.html
標籤:C++ 語言
上一篇:C的有符號整數取反
