我有四个UI
项:
>
QPushButton
,命名为PushTurnon
,调用一个名为on_PushTurnon_Clicked()
的公共插槽
,当QPushButton
被单击时,获取一些值,执行一些函数,并运行一些if的
。
QPushButton
,命名为PushTurnoff
,它改变了一个名为TurnoffVar
的变量的值,当这个变量变为“1”时,她打破了我们将在第一个按钮上一起创建的循环。
QPushButton
,命名为QPushButton_3
,它不执行任何操作,但将根据if的
启用或禁用。
QPushButton
,名为PushBusy
,当单击de变量Busy
时,如果等于“0”则变为“1”,如果等于“1”则变为“0”。
其思想是,当单击Pushturnon
时,在Qthread
上启动循环,当单击Pushturnoff
时,在Qthread
中停止循环,如果Busy
等于“1”,则不运行任何循环或Qthread
。
主要问题是:如何创建这个Qthread
,以及如何实现每5秒运行一次的循环类型?
MainPrograma
.cpp代码
#include "mainprograma.h"
#include "ui_mainprograma.h"
MainPrograma::MainPrograma(QWidget *parent) :
QMainWindow(parent),
uimain(new Ui::MainPrograma)
{
uimain->setupUi(this);
}
MainPrograma::~MainPrograma()
{
delete uimain;
}
void MainPrograma::on_pushBusy_clicked()
{
if(Busy==0){
Busy=1;
}
if(Busy==1){
Busy=0;
}
}
void MainPrograma::on_pushTurnOn_clicked()
{
QPushButton *ThirdButton = uimain->QPushButton_3;
Nmb2 = 2
Nmb4 = 4;
if(Busy==1){
ThirdButton->setEnabled(false);
}
if(Busy==0){
StartFunction(Nmb2, Nmb4);
if(TurnOffVar==1){
//stop loop
}
if(X==1){
ThirdButton->setEnabled(false);
}
if(X==0){
ThirdButton->setEnabled(true);
}
}
}
void MainPrograma::on_pushTurnOff_clicked()
{
TurnOffVar = 1;
}
MainPrograma
.h代码:
#ifndef MAINPROGRAMA_H
#define MAINPROGRAMA_H
#include <QMainWindow>
#include <QThread> //How to use??? I can't understand...
#include <QTimer> //How to use??? I can't understand...
#include <QDebug>
namespace Ui {
class MainPrograma;
}
class MainPrograma : public QMainWindow
{
Q_OBJECT
public:
StartFunction(int Nmb2, int Nmb4) {
qDebug()<<"result:"<<Nmb2+Nmb4;
}
private slots:
void on_pushTurnOn_clicked();
void on_pushTurnOff_clicked();
void on_pushButton_3_clicked();
void on_pushBusy_clicked();
private:
int Nmb2;
int Nmb4;
int TurnOffVar;
int Busy = 0;
};
#endif // MAINPROGRAMA_H
UI
项:四个QPushButtons
:
>
Pushturnon
。
PushTurnoff
。
PushButton_3
。
PushBusy
。
注意:该项目是来自Qt 5.9.9的Windows应用程序,在系统Windows7中。
我有这个代码:
checkTimer = new QTimer(this);
connect( checkTimer, SIGNAL(timeout()), this, SLOT(checkTimerFired()) );
我的“Stop Running”按钮将programCreated设置为false,checkTimerFired以以下内容开始
if (!programCreated) {
checkTimer->stop();
return;
}
这应该是您需要的Qt特定的东西。剩下的就是简单的C++了。