最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

QT中在QLabel顯示圖片并且利用鼠標(biāo)點(diǎn)擊畫(huà)線問(wèn)題

 更新時(shí)間:2022年11月10日 10:16:41   作者:BITLBB  
這篇文章主要介紹了QT中在QLabel顯示圖片并且利用鼠標(biāo)點(diǎn)擊畫(huà)線問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

在QLabel顯示圖片并且利用鼠標(biāo)點(diǎn)擊畫(huà)線

最近在做在Label上顯示圖片并且通過(guò)鼠標(biāo)點(diǎn)擊畫(huà)線,在網(wǎng)上查了很多零零散散的東西,收獲也多

很多初學(xué)者更希望直接貼代碼,這樣可以模仿來(lái)寫(xiě),我下面直接貼出我的項(xiàng)目中自己寫(xiě)的maLabel類

(如果只是實(shí)現(xiàn)利用鼠標(biāo)繪制, 重寫(xiě)void paintEvent(QPaintEvent *event);void mousePressEvent(QMouseEvent *e); void mouseMoveEvent(QMouseEvent *e); void mouseReleaseEvent(QMouseEvent *e);即可,其他函數(shù)是我項(xiàng)目需求所以多寫(xiě)的,可以忽略)

申明myLabel類,繼承QLabel,生成myLabel.h和myLabel.cpp文件

以下為我的代碼,供參考

我只是實(shí)現(xiàn)了畫(huà)一條直線,如果要畫(huà)多條,可以用vector將之前若干條的信息干存下來(lái),每次都繪制

myLabel.h 

#ifndef MYLABEL_H
#define MYLABEL_H
#include <QLabel>
#include <QPoint>
#include <QColor>
#include <QPaintEvent>
#include <QImage>
#include <QPixmap>
 
class myLabel : public QLabel
{
    //Q_OBJECT
public:
    myLabel();
    //~myLabel();
    //繪制線條
    virtual void paintEvent(QPaintEvent *event) override;
    //鼠標(biāo)按下
    void mousePressEvent(QMouseEvent *e);
    //鼠標(biāo)移動(dòng)
    void mouseMoveEvent(QMouseEvent *e);
    //鼠標(biāo)抬起
    void mouseReleaseEvent(QMouseEvent *e);
 
    //設(shè)置所畫(huà)線條屬性
    void setLineColor(const QColor lineColor);
    void setLineSize(const int lineSize);
    //得到畫(huà)線的起點(diǎn)和終點(diǎn)
    QPoint getStartPoint();
    QPoint getEndPoint();
 
    void clear();
 
private:
    QPoint lineStartPoint;          //畫(huà)線起點(diǎn)
    QPoint lineEndPoint;            //畫(huà)線終點(diǎn)
    QColor lineColor;               //線條顏色
    int lineSize;                  //5種線型
    bool isPressed;
};
 
#endif // MYLABEL_H

myLabel.cpp

#include "myLabel.h"
#include <QPen>
#include<QPainter>
 
myLabel::myLabel()
{
    this->lineStartPoint = QPoint(0,0);
    this->lineEndPoint = QPoint(0,0);
    this->lineColor = QColor(Qt::black);
    this->lineSize = 3;
}
 
//繪制線條
void myLabel::paintEvent(QPaintEvent *event)
{
    QLabel::paintEvent(event);//必須有,才能讓背景圖片顯示出來(lái)
    QPainter painter(this);
    QPen pen;
    pen.setColor(lineColor);
    pen.setWidth(lineSize);
    painter.setPen(pen);
    painter.drawLine(lineStartPoint,lineEndPoint);
}
 
//鼠標(biāo)按下
void myLabel::mousePressEvent(QMouseEvent *e)
{
    lineStartPoint = e->pos();
    lineEndPoint = e->pos();
    //在圖片上繪制
    isPressed = true;
}
 
//鼠標(biāo)移動(dòng)
void myLabel::mouseMoveEvent(QMouseEvent *e)
{
    if(isPressed)
    {
        lineEndPoint=e->pos();
        update();
    }
}
 
//鼠標(biāo)抬起
void myLabel::mouseReleaseEvent(QMouseEvent *e)
{
    isPressed=false;
    update();
}
 
void myLabel::setLineColor(const QColor lineColor)
{
    this->lineColor = lineColor;
}
 
void myLabel::setLineSize(const int lineSize)
{
    this->lineSize = lineSize;
}
 
QPoint myLabel::getStartPoint()
{
    return lineStartPoint;
}
 
QPoint myLabel::getEndPoint()
{
    return lineEndPoint;
}
 
void myLabel::clear()
{
    lineStartPoint = QPoint(0,0);
    lineEndPoint = QPoint(0,0);
    update();
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺析C++中static的一些用法

    淺析C++中static的一些用法

    static是靜止的,靜態(tài)的意思,那它有什么用呢,今天通過(guò)實(shí)例代碼講解下C++中static的一些用法,感興趣的朋友跟隨小編一起看看吧
    2022-12-12
  • Qt+Opencv實(shí)現(xiàn)梯度矯正功能

    Qt+Opencv實(shí)現(xiàn)梯度矯正功能

    這篇文章主要為大家詳細(xì)介紹了Qt如何結(jié)合Opencv實(shí)現(xiàn)梯度矯正功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-04-04
  • C++實(shí)現(xiàn)LeetCode數(shù)組練習(xí)題

    C++實(shí)現(xiàn)LeetCode數(shù)組練習(xí)題

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode的幾道數(shù)組練習(xí)題,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C++中虛表是什么意思(概念及示例)

    C++中虛表是什么意思(概念及示例)

    虛函數(shù)表,以及虛函數(shù)指針是實(shí)現(xiàn)多態(tài)性(Polymorphism)的關(guān)鍵機(jī)制,這篇文章主要介紹了C++中虛表是什么意思(概念及示例),需要的朋友可以參考下
    2024-03-03
  • C語(yǔ)言中分支和循環(huán)的6種實(shí)現(xiàn)形式總結(jié)

    C語(yǔ)言中分支和循環(huán)的6種實(shí)現(xiàn)形式總結(jié)

    C語(yǔ)言時(shí)一門結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言,這篇文章主要介紹了C語(yǔ)言中的分支和循環(huán)的6種實(shí)現(xiàn)形式,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-04-04
  • C語(yǔ)言詳解UDP通信的實(shí)現(xiàn)

    C語(yǔ)言詳解UDP通信的實(shí)現(xiàn)

    UDP協(xié)議是用戶數(shù)據(jù)報(bào)協(xié)議,面向無(wú)連接的、不穩(wěn)定、不可靠、不安全的數(shù)據(jù)報(bào)傳遞---更像是是收發(fā)短信;UDP傳輸不需要建立連接,傳輸效率更高,在穩(wěn)定的局域網(wǎng)內(nèi)環(huán)境相對(duì)可靠;UDP天然支持多客戶端
    2022-05-05
  • C語(yǔ)言基礎(chǔ)文件操作方式超全詳解建議收藏

    C語(yǔ)言基礎(chǔ)文件操作方式超全詳解建議收藏

    這篇文章主要為大家介紹了關(guān)于C語(yǔ)言文件操作方式的詳細(xì)總結(jié),建議收藏隨用隨看,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • C語(yǔ)言實(shí)現(xiàn)最大間隙問(wèn)題實(shí)例

    C語(yǔ)言實(shí)現(xiàn)最大間隙問(wèn)題實(shí)例

    這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)最大間隙問(wèn)題的方法,是一個(gè)比較經(jīng)典的算法設(shè)計(jì)問(wèn)題,對(duì)于學(xué)習(xí)算法設(shè)計(jì)有一定的借鑒價(jià)值,需要的朋友可以參考下
    2014-09-09
  • C語(yǔ)言實(shí)現(xiàn)倉(cāng)庫(kù)物資管理系統(tǒng)

    C語(yǔ)言實(shí)現(xiàn)倉(cāng)庫(kù)物資管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)倉(cāng)庫(kù)物資管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • C++中std::ios_base::floatfield報(bào)錯(cuò)已解決

    C++中std::ios_base::floatfield報(bào)錯(cuò)已解決

    在C++編程中,設(shè)置浮點(diǎn)數(shù)輸出格式時(shí)可能遇到std::ios_base::floatfield錯(cuò)誤,解決方法包括使用正確的格式化標(biāo)志組合,避免沖突的格式化設(shè)置,以及檢查流狀態(tài)標(biāo)志是否正確,通過(guò)這些方法可以有效避免浮點(diǎn)數(shù)格式化錯(cuò)誤,并確保輸出精確
    2024-09-09

最新評(píng)論

固镇县| 乐陵市| 尉犁县| 鹤岗市| 临安市| 淄博市| 海南省| 山阳县| 砚山县| 南开区| 大渡口区| 晋中市| 嘉祥县| 威宁| 碌曲县| 静安区| 常宁市| 英吉沙县| 汽车| 黑龙江省| 阿拉尔市| 鲁甸县| 清河县| 乳源| 临安市| 女性| 安西县| 新乡市| 九江县| 乌兰浩特市| 板桥市| 安平县| 灵寿县| 明星| 南丹县| 密云县| 翼城县| 历史| 芷江| 长海县| 阆中市|