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

畫線問題

Qt只能在paintEvent中畫線,請問利用connect(timer, SIGNAL(timeout()), this, SLOT(showTime()));的方式來觸發事件,最快可以多快反應,我想要呈現一個連續隨機畫線條左至右一直重複畫

這是我的程式 但是畫面呈現的速度不夠快x=0到x=500要畫6秒太慢了請問有方法加快他的速度嗎


#include <QtGui>
#include "digitalclock.h"
#include <QWidget>
#include <QPainter>
#include <QPixmap>
#include <QByteArray>
QTime t;
//! [0]
DigitalClock::DigitalClock(QWidget *parent)
    : QLCDNumber(parent)
{
    x=0;
    y=0;
    z=0;
    setSegmentStyle(Filled);

    QTimer *timer = new QTimer(this);
    QTimer *timer1 = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(showTime()));
    timer->start(10;
    showTime();
    setWindowTitle(tr("Digital Clock"));
    resize(500, 500);
    pix = QPixmap(500,500);
    pix.fill(Qt::white);  
    ba.resize(500);
    bb.resize(500);
    bc.resize(500);
    
    
}

void DigitalClock::showTime()
//! [1] //! [2]
{  
   ba[x] =x;
   bb[x] =y;
   bc[x] =z;
   y=z;
   if(x<500)
     x=x+2;
   else 
     x=0;
   z=qrand() % 100;
   repaint();  
    
}
// 實作事件處理
void DigitalClock::paintEvent(QPaintEvent *event) {
    int i;

    // 建立QPainter
    QPainter pp(&pix);
    QPainter painter(this);   
    pp.setPen(QPen(Qt::white,2,Qt::SolidLine));
    pp.drawLine(x,bb[x],x+2,bc[x]);
    pp.setPen(QPen(Qt::blue,2,Qt::SolidLine));
    pp.drawLine(x,y,x+2,z);
    painter.drawPixmap(0,0,pix);
}
--------------------编程问答-------------------- 1:repaint是立即重绘,可以的话用update代替。
2:这些代码确定可用吗?
connect(timer, SIGNAL(timeout()), this, SLOT(showTime()));
timer->start(10;
showTime();
中间那行少半个括号。
3:没看出来有什么特别需要,没必要先画到pixmap上面,在paint到屏幕,直接绘到屏幕上更快。
4:程序配置debug还是release,必须用release,否则代码写的很好,画图一样很慢。 --------------------编程问答-------------------- 那個段貼上來沒注意到...感謝你

因為我是要紀錄之前的畫線,所以當直接print他會把之前的畫線清除,還是大哥你有什麼樣的寫法
我是看網路上是說要不清除舊的資料必須透過pixmap函式才行...
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,