qt 绘图备忘录

目录

一、鼠标事件

1、点击鼠标左键时显示鼠标按下的坐标

2、 ...

二、paintEvent

1.QPainter绘制点线

2....


一、鼠标事件

1、点击鼠标左键时显示鼠标按下的坐标

void MainWindow::mousePressEvent(QMouseEvent *e)
{
    if(e->button()==Qt::LeftButton)
    {
        qDebug()<<"press point:"<<e->x()<<" "<<e->y();
        QPoint p(e->pos());
    }
}

2、 ...

二、paintEvent

1.QPainter绘制点线

.h: 

class MainWindow
{
//....
public:
    void paintEvent(QPaintEvent *);
//...
}

 :cpp:

void MainWindow::paintEvent(QPaintEvent *)
{
    QPainter bgImage(this);
    
    //bgImage.setRenderHint(QPainter::Antialiasing,true);
    //Antialiasing:反锯齿
    //如果为true,则设置给定的渲染提示;否则清除渲染提示
    bgImage.setPen(QPen(Qt::black,5));    //设置pen方式1
    painter.translate(10,10);             //translate: painting画笔坐标偏移转换

    QPoint qp(100,100);
    bgImage.drawPoint(qp);    //画点

    painter.drawEllipse(QPoint(0,0),1,1);     //绘制给定矩形定义的椭圆
    qDebug()<<painter.brushOrigin()<<endl;    //返回当前设置的画笔坐标QPoint

    QPainter line_painter(this);
    QPen line_pen;
    line_pen = QPen(Qt::black,1,Qt::SolidLine);   //设置pen SolidLine:默认线
    line_pen.setStyle(Qt::CustomDashLine);        //Custom:自定义 ;DotLine:点状线;
    QVector<qreal> dashes;
    qreal space = 2;
    dashes << 1 << space << 3 << space;        //1个点之后3个连续点,间隔设置未知
    line_pen.setDashPattern(dashes);
    line_painter.setPen(line_pen);
    painter.drawLine(20,20,100,100);        //画线
}

 

2....

一:截取整个屏幕
它就是QScreen类的grabWindow函数.

        参数是窗口ID和要截取的区域(x、y、width和height组成的矩形区域)。

窗口ID可以通过QWidget的winId()获得,若截取整个屏幕窗口ID传入0。

 如    QScreen *screen = QGuiApplication::primaryScreen(); // 这个是有界面的,   获取电脑的当前设置的主屏幕 还有类似函数  QApplication::primaryScreen();无ui界面的

        QPixmap pximap = creen->grabWindow(0);

         pximap.save(filePathName, "jpg");

如果你的应用程序是无界面的,直接使用QCoreApplication即可,如果是gui相关,但没有使用widgets模块的就使用QGuiApplication,否则使用QApplication。

继承关系:

QApplication <- QGuiApplication <- QCoreApplication <- QObject

二:截取某个控件(QWidget)
调用QWidget的grab方法 

QPixmap p = this->grab(QRect(0, 0, 1000, 800));

p.save(filePathName,"png");

3、编译不同版本qt工程 'class QPainterPath' has no member named 'clear'

path.clear();          //换成 path = QPainterPath();

4、int转QString 

int a = 1;

QString str = QString::nuber(a);

5、在固定的string中间指定位置添加内容

int a = 1;

QString str = QString(“%1bcd”).arg(a);

6、

"for(auto item:add)" 是一种 C++11 的语法,它表示使用 C++11 的新特性 "Range-based for loop",用于遍历容器中的所有元素。其中 "add" 是一个容器,"item" 是一个变量,每次循环都会将容器中的下一个元素赋值给该变量。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值