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

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

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

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

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

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

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

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

以下為我的代碼,供參考

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

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)移動
    void mouseMoveEvent(QMouseEvent *e);
    //鼠標(biāo)抬起
    void mouseReleaseEvent(QMouseEvent *e);
 
    //設(shè)置所畫線條屬性
    void setLineColor(const QColor lineColor);
    void setLineSize(const int lineSize);
    //得到畫線的起點(diǎn)和終點(diǎn)
    QPoint getStartPoint();
    QPoint getEndPoint();
 
    void clear();
 
private:
    QPoint lineStartPoint;          //畫線起點(diǎn)
    QPoint lineEndPoint;            //畫線終點(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);//必須有,才能讓背景圖片顯示出來
    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)移動
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();
}

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

相關(guān)文章

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

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

    static是靜止的,靜態(tài)的意思,那它有什么用呢,今天通過實(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í)題,本篇文章通過簡要的案例,講解了該項(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語言中分支和循環(huán)的6種實(shí)現(xiàn)形式總結(jié)

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

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

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

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

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

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

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

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

    C語言實(shí)現(xiàn)倉庫物資管理系統(tǒng)

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

    C++中std::ios_base::floatfield報錯已解決

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

最新評論

边坝县| 马边| 达日县| 伽师县| 石景山区| 肥东县| 蒙阴县| 涟源市| 邛崃市| 汝州市| 嫩江县| 清水县| 资兴市| 额济纳旗| 凌源市| 台东县| 天门市| 潮州市| 阿拉善左旗| 湘阴县| 左云县| 上蔡县| 阜新| 永州市| 靖州| 绥棱县| 从化市| 乌海市| 淅川县| 丹寨县| 罗城| 娄烦县| 洪泽县| 夏津县| 天津市| 巴林左旗| 郯城县| 金塔县| 来安县| 谷城县| 沅陵县|