gpt4 book ai didi

c++ - 死循环 -> 需要用Qt显示主屏幕

转载 作者:行者123 更新时间:2023-11-28 03:40:15 27 4
gpt4 key购买 nike

我又来了!所以,我正在用 C++ 开发一个 GBC 模拟器,但我遇到了一些问题。首先,我在 VS10 中使用 Qt,到目前为止它运行良好。但是,我有我的 GUI(主窗口)和一些对象(QListWidget、按钮等)。因此,在我的 CPU 类中,我有一个模拟所有 GBC 指令的循环。它以一种简单的方式工作。获取代码、解码、获取和调用一个开关中的操作,从头再来。所以,我的问题是,在每次交互时,我都希望在主屏幕上显示更新的列表。

下图,我无法发布,因为我没有 10 个代表点数。 http://i.stack.imgur.com/BdaHo.png

所以,一段代码让你可以(尝试?)了解发生了什么:(cpu.cpp)

next:
op = FETCH;
setSelection((UINT32)op);
ciclos = cycles_table[op];

switch(op)
{
do the magic
emit onEndProcess((UINT32)op);
goto next;
}

CPU.h

signals:
void onEndProcess(UINT32);

由ratagbc接收 (ratagbc.h)

public slots:
void receivedEndProcess(UINT32);

并实现:

void RataGBC::receivedEndProcess(UINT32 i){
this->ui.listWidget->item(i+1)->setSelected(true);
this->show();
}

在 rata 构造函数中,在 ui.setupUI(...) 之后我有:

cpp = new cpu();
connect(cpp,SIGNAL(onEndProcess(UINT32)),this,SLOT(receivedEndProcess(UINT32)));

}

其中 cpp 是 cpu 类的一个实例。这里有一个问题,这个连接返回 false !!

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
RataGBC w;
dasm dsm;
FILE *file = fopen("Tetris DX.gbc","r");
int c = 0;
while(dsm.DAsm(file,w.ui.listWidget,c));
fclose(file);
w.cpp->start();
w.show();
return a.exec();
}

我注意到的一件事是我需要在我的 cpu.cpp 中实现(空白的)onEndProcess,否则它会给我链接错误。真的有必要吗?

希望你们能明白我的需要!谢谢!

最佳答案

a.exec() 启动事件循环,其中包括更新 GUI。将相关步骤放入函数中并使用Qt's event system执行代码。

And don't use goto.

关于c++ - 死循环 -> 需要用Qt显示主屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9504912/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com