QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 663|回复: 3

QT Programming Problem .

[复制链接]
发表于 2003-5-22 21:50:16 | 显示全部楼层 |阅读模式
#include <qapplication.h>
#include <qwidget.h>
#include <qpainter.h>
#include <qpoint.h>
#include <qtimer.h>

class MyWidget : public QWidget
{
    Q_OBJECT
    public:
        MyWidget( QWidget *parent = 0, const char *name = 0 );
    protected:
        void paintEvent( QPaintEvent * );
    private:
        QTimer  *autoShootTimer;
        QRect   rect;
        int     timeout;
        int     i;
    private slots:
        void    move(void);
};

MyWidget::MyWidget(QWidget *parent, const char *name ) : QWidget(parent, name)
{
    autoShootTimer = new QTimer( this, "movement handler" );
    connect( autoShootTimer, SIGNAL(timeout()), SLOT(move()) );
    rect = QRect(10,10,40,40);
    autoShootTimer->start( 50 );

    i = 4;

}

void MyWidget::paintEvent(QPaintEvent *)
{
    QPainter paint( this);
    paint.drawRect(rect);
}

void MyWidget::move()
{
    timeout++;
    if(timeout>100)
    return;
    rect = QRect(10+i, 10, 40, 40);
    repaint();
}


int main(int argc, char **argv)
{
    QApplication a(argc, argv);
    MyWidget  w;
    a.setMainWidget( &w);
    w.show();
    return a.exec();
}

// i just want the rectangle move autoly. but where is the wrong.?
发表于 2003-5-23 10:05:18 | 显示全部楼层
建议你看看
$QTDIR/examples/forever这个例子
和你的要求差不多
按那个改改就可以了
good luck
回复

使用道具 举报

 楼主| 发表于 2003-5-23 12:42:01 | 显示全部楼层
我发现我的错了:如果我把类的申明和实现放在一个头文件中,就会发生虚拟表(VTable)错.
后来我将申明和实现分开,好了。
希望能给大家一个注意.
对了,在这我要非常谢谢 cavendish 的主页, 在我编程中,大部分都是在该主页上得到知识的.Thank u.
回复

使用道具 举报

发表于 2003-5-24 17:12:18 | 显示全部楼层
ah?
怎么着至少也要放在一个cpp文件中呀
都放在h文件中
咋编译嘛
^_^
最近学哪块呢?
回来写点学习笔记吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-15 19:50 , Processed in 0.093170 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表