ich habe folgendes Problem in Qt, ich versuche, ein Schach-Spiel zu machen, und ich habe einige Probleme stoßen:Verwenden Variable in Mainwindow erklärt Qt
In der Klasse Hauptfenster Ich habe die folgende Funktion :
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
scene = new ChessBoard;
QGraphicsView *view = new QGraphicsView(scene);
setCentralWidget(view);
connect(scene,SIGNAL(clicked(int,int)),this,SLOT(clicked(int,int)));
//!!!!!!!!!!
scene->setInitialPositions();
}
Ich habe eine variable Szene, Szene ist ein Objekt der Klasse ChessBoard. In der ganzen Klasse Hauptfenster Ich kann die Szene-Variable verwenden, um Funktionen in ChessBoard deklariert zu verwenden.
Allerdings habe ich eine andere Klasse Spiel genannt. In Spiel ich diese Funktion
void game::setStartBord() {
scene->setInitialPositions();
}
haben Sie braucht einfach scene->setInitialPositions();
jedoch zu starten, ich habe keinen Zugriff auf die ‚Szene-Variable‘ gibt. Ich habe versucht, die ChessBoard- und MainWindow-Klasse zu erben, habe versucht, die Szene global zu machen, aber keine war wirklich eine gute Lösung.
Wie würde ich das tun? Voller Code ist sichtbar hier: https://github.com/UA-Niel/chess
Was ist der genaue Zweck der Klasse 'Spiel'? klingt wie Sie Ihre Klassen neu gestalten müssen ... – Mike
Sie möchten SetInitialPositions() wahrscheinlich einen Steckplatz machen. Und benutze Singnals und Slots, um es auszuführen. – drescherjm
mögliches Duplikat von https://stackoverflow.com/q/48006862/5366641. – scopchanov