- Я пытаюсь создать простой интерфейс с Qt Creator. Фоновый код продолжает печатать флаг int, и когда пользователь нажимает кнопку, флаг меняется, поэтому вывод меняется.
UI, как это:

выводится так: щелкните 《output 1 , ,, затем измените 0 на 1

- Как сохранить фоновый код работающим без создания потока в qt creator?
вот код cpp, я не добавил .h файлы:
все файлы доступны здесь перейти ко всему коду в github
main.cpp:
#include "MainWindow.h"
#include <QApplication>
#include <iostream>
#include "deal.h"
int main(int argc, char *argv[])
{
std::cout << argc << " " << argv[0] << std::endl;
// getchar();
QApplication a(argc, argv);
MainWindow w;
w.show();
// getchar();
pthread_t tid; //Not want to create a thread to run this
pthread_create(&tid, NULL, run, NULL);
//pthread_exit(&tid);
a.exec();
return 0;
}
mainwindow.cpp
#include "MainWindow.h"
#include "ui_MainWindow.h"
#include "deal.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->pbOriginSound, SIGNAL(clicked()), this, SLOT(change2_origin_sound()));
connect(ui->pbVecSound, SIGNAL(clicked()), this, SLOT(change2_vec_sound()));
connect(ui->pbVecNrSound, SIGNAL(clicked()), this, SLOT(change2_vec_nr_sound()));
}
void MainWindow::change2_origin_sound(){
iFlag = 0;
printf("%d", iFlag);
}
void MainWindow::change2_vec_sound(){
iFlag = 1;
printf("%d", iFlag);
}
void MainWindow::change2_vec_nr_sound(){
iFlag = 2;
printf("%d", iFlag);
}
MainWindow::~MainWindow()
{
delete ui;
}
deal.cpp
#include "deal.h"
#include <iostream>
#include <unistd.h>
int iFlag;
void *run(void *arg){
while(1){
// sleep(1);
printf("%d\n", iFlag);
printf("%d%d\n", iFlag, iFlag);
}
}