c++ - 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;
}
我已经包括了我的
解决方案
我能够按照这个问题中发布的答案解决我的问题。我的最终代码是:
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();
}
推荐阅读
- windows-10 - 如果我无法在 Python shell 和 Windows 10 中的 IDLE 中键入双下划线怎么办?
- ruby - 我可以使用这种表示法在对象上调用自定义方法吗?
- optaplanner - Optaplanner:动态终止配置
- asp.net-core - 验证客户端证书
- c# - 类型的成员“aim1_Accuracy”在数据读取器中没有同名的对应列
- reactjs - 从消费者 componentDidMount 更新反应上下文会导致无限重新渲染
- python - Google Cloud Datastore:计算处于特定状态的所有实体
- r - 以相等的间隔对数据帧中的组中的数据进行分箱的更好方法
- azure-sql-database - 检测到冲突 - 无法回退 - 违反主键约束 - 无法在对象中插入重复键
- swift - 如何在 Swift 中将 AR World Origin 放入墙上检测到的二维码并旋转它?