zoukankan      html  css  js  c++  java
  • QT简易画笔

    左键按住绘画,右键清空

    #ifndef WIDGET_H
    #define WIDGET_H
    
    #include <QWidget>
    #include <QMouseEvent>
    #include <QKeyEvent>
    #include <QPaintEvent>
    #include <QPainter>
    #include <QPoint>
    #include <string>
    #include <list>
    QT_BEGIN_NAMESPACE
    namespace Ui { class Widget; }
    QT_END_NAMESPACE
    
    class Widget : public QWidget
    {
        Q_OBJECT
         class mesages{
        public:
            int x;
            int y;
            QString msg;
    
         };
    public:
        Widget(QWidget *parent = nullptr);
        ~Widget();
        void mousePressEvent(QMouseEvent *) ;
        void keyPressEvent(QKeyEvent *) ;
        bool EventFilter(QObject *,QEvent *);
        void paintEvent(QPaintEvent  *);
        QPainter *p;
        void getTex();
        QList<mesages> mytextlist;
         void mouseMoveEvent(QMouseEvent *);
    private slots:
        void on_pushButton_clicked();
    private:
        Ui::Widget *ui;
    };
    #endif // WIDGET_H

    主要是鼠标事件绘图事件

    #include "widget.h"
    #include "ui_widget.h"
    #include <QEvent>
    #include <qdebug.h>
    #include <string>
    
    Widget::Widget(QWidget *parent)
        : QWidget(parent)
        , ui(new Ui::Widget)
    {
        ui->setupUi(this);
    
        //    connect(this,SIGNAL(returnPressed()),this,SLOT(on_pushButton_clicked()));
        ui->pushButton->installEventFilter(ui->pushButton);
    }
    
    Widget::~Widget()
    {
        delete ui;
    }
    
    
    void Widget::on_pushButton_clicked()
    {
        //    QObject::connect()
        ui->textEdit1->clear();
        //    ui->textEdit1->changeEvent()
        ui->Ui_Widget::pushButton->setText("ssssss");
    
    
    
        //    this->close();
    }
    
    
    void Widget::keyPressEvent(QKeyEvent *event)
    {
        int key=event->key();
    
        qDebug()<<(char)key;
        if (event->key() == Qt::Key_Return && (event->modifiers() & Qt::ControlModifier))
        {
    
            ui->textEdit1->clear();
            ui->Ui_Widget::pushButton->setText("回车");
    
    
        }
    
    }
    
    bool Widget::EventFilter(QObject *q,QEvent *e){
    
        if(q==(QObject*)ui->pushButton&&((static_cast<QKeyEvent*>(e)->key() == Qt::Key_Return))){
    
            return  true;
        }
        return QWidget::eventFilter(q,e);
    }
    
    void Widget::paintEvent(QPaintEvent  *)
    {
            QPainter painter(this);
     p = new QPainter(this);
            painter.drawText(QPoint(300,50),"this is my widget");
           getTex();
    //    //绘制一行文字
    //    p = new QPainter(this);
    //    p->drawText(QPoint(300,50),"this is my widget");
    }
    
    void Widget::getTex(){
    
        foreach (mesages msg, mytextlist) {
            p->drawText(QPoint(msg.x,msg.y),msg.msg);
        }
        p->renderHints();
        this->update();
    };
    
    void Widget::mousePressEvent(QMouseEvent *ev)
    {
        if( ev->button()==Qt::LeftButton){
            ui->textEdit1->clear();
            ui->Ui_Widget::pushButton->setText("左键");
            mesages msg;
            msg.x=ev->x();
            msg.y=ev->y();
            msg.msg="this is my 左键";
            mytextlist.push_back(msg);
        };
    
        if( ev->button()==Qt::RightButton){
    
            ui->textEdit1->clear();
            ui->Ui_Widget::pushButton->setText("右键");
            mytextlist.clear();
            if(ev->modifiers()==Qt::EnterKeyReturn){
                ui->textEdit1->clear();
                ui->Ui_Widget::pushButton->setText("回车");
            }
        }
    
    
    }
    
    void Widget::mouseMoveEvent(QMouseEvent *ev){
    
    //    if( ev->button()==Qt::LeftButton){};
            ui->textEdit1->clear();
            ui->Ui_Widget::pushButton->setText("左键move");
            mesages msg;
            msg.x=ev->x();
            msg.y=ev->y();
            msg.msg="this is my 左键move";
            mytextlist.push_back(msg);
    
    }

     

  • 相关阅读:
    (四十九)android解决同一个界面上ScrollView和 ListView等可滚动控件滚动冲突问题
    (四十八)Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性
    (四十七)属性动画Demo
    (四十六)一个属性动画的经典例子(让TextView中的数值从某一个值变成0再变到另一个值)
    (四十五)百度地图在android中的应用
    iOS 检查更新
    iOS Apple Pay
    iOS 获取emoji表情和拦截emoji表情
    iOS拨打电话的三种方式
    Swift
  • 原文地址:https://www.cnblogs.com/mrguoguo/p/14841629.html
Copyright © 2011-2022 走看看