首页 > 解决方案 > MainWindow显示后的QT执行函数

问题描述

我对 QT 很陌生,无法理解如何在程序开始时运行函数。我只是希望测试功能在显示主窗口后运行一次。

我试过这个解决方案,无济于事。我在下面包含的代码连续运行测试功能。我试图使用该QTimer::singleShot功能,但它根本不会运行。

我希望有人可以向我展示一次运行该功能的方法。

主窗口.h

#ifndef MAIN_WINDOW_H
#define MAIN_WINDOW_H

#include <QMainWindow>

namespace Ui {
class Main_Window;
}

class Main_Window : public QMainWindow
{
    Q_OBJECT

public:
    explicit Main_Window(QWidget *parent = 0);
    ~Main_Window();

private slots:
    void Test();

private:
    Ui::Main_Window *ui;

};

#endif // MAIN_WINDOW_H

主窗口.cpp

Main_Window::Main_Window(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::Main_Window)
{
    ui->setupUi(this);

    QTimer *Timer_One = new QTimer(this);
    connect(Timer_One, SIGNAL(timeout()), this, SLOT(Test()));
    Timer_One->start(1);
}


int i = 0;
void Main_Window::Test(){
    i += 1;
    qDebug() << i;
}

我已经包括了我的

标签: c++qt5

解决方案


我能够按照这个问题中发布的答案解决我的问题。我的最终代码是:

Main_Window.h

class Main_Window : public QMainWindow
{
    Q_OBJECT

public:
    explicit Main_Window(QWidget *parent = 0);
    ~Main_Window();

public slots:
    void START();
    void STOP();

private slots:
    void Test();

private:
    Ui::Main_Window *ui;
    QTimer * Timer_One;

};

Main_Window.cpp

Main_Window::Main_Window(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::Main_Window)
{
    ui->setupUi(this);
    
    Timer_One = new QTimer(this);
    Timer_One->setInterval(50);
    connect(Timer_One, SIGNAL(timeout()), this, SLOT(Test()));
    START();
}

void Main_Window::START(){
    Timer_One->start();
}

void Main_Window::STOP(){
    Timer_One->stop();
}

int i = 0;
void Main_Window::Test(){
    i += 1;
    qDebug() << i;
    STOP();
}

推荐阅读