Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt使用QThread或QTimer逐个添加点?_Qt - Fatal编程技术网

Qt使用QThread或QTimer逐个添加点?

Qt使用QThread或QTimer逐个添加点?,qt,Qt,我想在Qt中制作一个程序,一个一个地添加点,而不是一次添加所有点。要做到这一点,我需要使用QThread,或者我可以只使用QTimer?这可以使用QTimer来完成,如果它与时间相关,比如每1秒一次,那么这就是方法。只需创建计时器,将其超时信号连接到插槽,它就会像一个符咒一样工作您需要创建一些类,继承自QObject: 用于添加点的插槽可能如下所示: void Test_Timer::addPoint() { static int number = 0; if (lst->

我想在Qt中制作一个程序,一个一个地添加点,而不是一次添加所有点。要做到这一点,我需要使用QThread,或者我可以只使用QTimer?

这可以使用QTimer来完成,如果它与时间相关,比如每1秒一次,那么这就是方法。只需创建计时器,将其超时信号连接到插槽,它就会像一个符咒一样工作

您需要创建一些类,继承自QObject:

用于添加点的插槽可能如下所示:

void Test_Timer::addPoint()
{
    static int number = 0;

    if (lst->size() < 10) {
        lst->append(QPoint(0, number++));
        qDebug() << lst->size();
    } else {
        timer->stop();
        deleteLater();
    }
}

我想这个例子会对你有帮助。

你能告诉我们你到目前为止做了什么吗?我只是一次添加了所有的点。什么是点?有多少,为什么不是一次全部?这是一个很好的猜测尝试,但真的,你不应该鼓励那些提出如此模糊问题的海报。
Test_Timer::Test_Timer(QObject *parent) : QObject(parent)
{
    lst = new QList<QPoint>;
    timer = new QTimer;

    connect(timer, SIGNAL(timeout()), this, SLOT(addPoint()));

    timer->start(500);
} 
void Test_Timer::addPoint()
{
    static int number = 0;

    if (lst->size() < 10) {
        lst->append(QPoint(0, number++));
        qDebug() << lst->size();
    } else {
        timer->stop();
        deleteLater();
    }
}
Test_Timer::~Test_Timer()
{
    lst->clear();
    delete lst;

    if (timer->isActive())
        timer->stop();
    delete timer;
}