вот я снова!Итак, я разрабатываю эмулятор GBC на C ++, но у меня есть некоторые проблемы.Прежде всего, я использую Qt в VS10, который пока работает хорошо.Но у меня есть GUI (главное окно) с несколькими объектами (QListWidget, Buttons и т. Д.).Итак, в моем классе 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 - это экземпляр класса процессора.Здесь есть проблема, это соединение возвращает 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();
}
Одна вещь, которую я заметил, это то, что мне нужно реализовать (пустой) onEndProcess в моем cpu.cpp, или это дает мне ошибку компоновки,Это действительно необходимо?
Надеюсь, вы, ребята, можете понять, что мне нужно!Спасибо!