ich zwei verschiedene Klassen in zwei Dateien:wie Funktion zwischen zwei Klassen verbinden
class Game: public QGraphicsView()
class Window: public QMainWindow()
{
public: Window();
Game *game;
public slots: void test() {game = new Game();};
}
in Window.cpp
ich ein neues Spiel mit Test() Funktion starten:
Window::Window() {test();}
jetzt in Game.cpp
I erstellen QMessageBox
mit zwei QPushButton
QMessageBox *box= new QMessageBox();
QPushButton *btYES = box->addButton(tr("YES"),QMessageBox::ActionRole);
QPushButton *btNO = box->addButton(tr("NO"),QMessageBox::ActionRole);
box->exec();
if (box->clickedButton() == btYES) {Window::test();}
if (box->clickedButton() == btNO) {close();}
Wie Sie sehen können, möchte ich die Funktion test()
mit btYES
innerhalb der Game.cpp
verbinden, aber diese Funktion ist innerhalb Window.cpp
und ihre Funktion ist es, ein neues Spiel zu starten.
Es ist möglich, dies zu tun?
Scheint, wie Sie erstellen möchten 'static' Funktion. Wenn ja, dann ist das die Lösung: 'static void test() {/*...*/}' – PcAF
'Window :: Window() {Spiel * Spiel = neues Spiel();}' <= Du erschaffst ein neue lokale Variable namens 'Spiel'. 'void test() {game = new Game();};' <= Du initialisierst eine Membervariable namens 'game'. Sieht potenziell gefährlich aus, ist das absichtlich? – thuga
Ok Entschuldigung, ich habe einen Fehler gemacht. Ich habe {Game * game} in der Klasse Window.h öffentlich erklärt: –