当前位置:编程学习 > wap >>

QPainter问题

我看书上,和网上一些教程,为什么我要画一条直线,都要放到paintEvent里面,如果我需要在程序运行中再画一个图像

我要怎么办呢?

能不能放到自定义的槽去实现画线? --------------------编程问答--------------------
引用楼主 yu22122 的回复:
我看书上,和网上一些教程,为什么我要画一条直线,都要放到paintEvent里面,

规定如此
引用楼主 yu22122 的回复:
如果我需要在程序运行中再画一个图像
我要怎么办呢?

答案你不是开头就给出来了么?
引用楼主 yu22122 的回复:
能不能放到自定义的槽去实现画线?

不行(如果你想折腾的话,除外) --------------------编程问答-------------------- 应该可以把 槽函数里用Qpainter在painterdevice里画
paintEvent是在窗口可见情况下画 就直接画出来了 --------------------编程问答-------------------- 似乎不行啊 刚写在别的事件里提示不活动 --------------------编程问答-------------------- paintevent中画

repaint调用画 --------------------编程问答-------------------- 其实如果你想放在自定义槽函数里面话是可以的,你可以自定义一个信号连接到你那个槽,然后再在paintEvent里面emit你那个信号 --------------------编程问答-------------------- Qt官方一个家伙给的解释是:simply,u can't --------------------编程问答-------------------- 在paintevent里面画,然后在需要画出的地方调用update就行。 --------------------编程问答-------------------- draw操作必须放到paintevent中
调用系统paintevent事件即可,比如update或repaint
--------------------编程问答-------------------- 遇到了同样的问题,似乎无解。

需求如下: 在鼠标按下时画一条线,鼠标松开,线消失。

刚开始尝试在mousePressEvent使用QPainter,发现无效,查资料得知QPainter只能在paintEvent里面使用(看来远不如windows的device context方便),本想再折腾折腾,又怕麻烦,只好放弃。 --------------------编程问答--------------------
引用 9 楼 maximin 的回复:
遇到了同样的问题,似乎无解。

需求如下: 在鼠标按下时画一条线,鼠标松开,线消失。

刚开始尝试在mousePressEvent使用QPainter,发现无效,查资料得知QPainter只能在paintEvent里面使用(看来远不如windows的device context方便),本想再折腾折腾,又怕麻烦,只好放弃。


这个不难吧。

void ChatWindow::mousePressEvent(QMouseEvent *e)
{
    if(e->button() == Qt::LeftButton){
         flag = true;
         repaint();
    }
}

void ChatWindow::mouseReleaseEvent(QMouseEvent *e)
{
    if(e->button() == Qt::LeftButton){
         flag = false;
         repaint();
    }
}

//只需要在鼠标事件中,repaint就可以了,paintEvent中根据标志来重绘。
void ChatWindow::paintEvent(QPaintEvent *e)
{
    QPainter p(this);
    if(flag){
        p.setPen(Qt::red);
        p.setPen(Qt::DashDotLine );

        p.drawLine(this->rect().x(),this->rect().y(),
                          this->rect().width() / 2,this->rect().height() / 2);
    }
    return QWidget::paintEvent(e);
}
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,