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