• 6112阅读
  • 0回复

【提问】如何用按钮控制图形的绘制 [复制链接]

上一主题 下一主题
离线gaoyu
 
只看楼主 倒序阅读 楼主  发表于: 2006-03-09
下面是我的头文件:
test.h:

#ifndef __MYWIDGET__
#define __MYWIDGET__

#include <QApplication>
#include <QString>
#include <QPushButton>
#include <QLabel>
#include <QVBoxLayout>
#include <QWidget>
#include <QLineEdit>
#include <QTimer>
#include <QPainter>


class MyWidget : public QWidget
{
    Q_OBJECT
    public:
        MyWidget(QWidget *parent = 0);
        void paintEvent(QPaintEvent *);
       
    public slots:
        void showTime();
        void stopTime();
        void display();


    protected:
        QPushButton   *start;
        QPushButton   *pause;
        QLabel     *biao;
        QVBoxLayout   *layout;
        QLineEdit   *edit;
        QTimer     *timer;
        QPainter     *paint;
       
       
       
//         void MyWidget::timerEvent(QTimerEvent *event);
        int i;
        int j;

};
#endif

以下是test.cpp:
#include "test.h"


MyWidget::MyWidget(QWidget *parent):QWidget(parent)
{
    start = new QPushButton("start",this);
    pause =new QPushButton("pause",this);
    biao = new QLabel("wu",this);
    edit = new QLineEdit(this);
   
   


    i=0;
    j=9;

    connect(start, SIGNAL(clicked()), this, SLOT(showTime()));
    connect(pause,SIGNAL(clicked()),this,SLOT(stopTime()));

    layout = new QVBoxLayout;
    layout->addWidget(edit);
    layout->addWidget(start);
    layout->addWidget(pause);
    layout->addWidget(biao);

    setLayout(layout);
}



void MyWidget::showTime()
{
   
    QTimer *timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(display()));
    connect(timer,SIGNAL(timeout()),this,SLOT(paintEvent()));
    timer->start(1000);
}    
void MyWidget::display()
{
    char buf[128];
    int buf1[10]={9,8,7,6,5,4,3,2,1,0};
    sprintf(buf,"%d",buf1[j--]);
    edit->setText(buf);
    biao->setText(buf);
    while(!(j+1))
        j=9;
}

void MyWidget::paintEvent(QPaintEvent *event)
{
              paint=new QPainter;
    int i=0;
    for(i=0;i<=100;i++)
    {
        while(false);
        paint->begin(this);
        paint->drawPoint(400, i);
        paint->end();
       
    }
       

}


void MyWidget::stopTime()
{
    biao->setText("changed text!");
    QTimer *timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(killTimer()));
}



int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    MyWidget widget;
    widget.show();
    return app.exec();
}


我想实现的功能是点了按钮start之后,才画图,可每次都是一运行程序他就自己画图了,
而且想点pause之后就可以停止,可也不存在killTimer这个slot,请问怎么才能实现我说的功能啊?

谢谢!
[ 此贴被XChinux在2006-03-09 15:59重新编辑 ]
快速回复
限100 字节
 
上一个 下一个