Kann ich mit dem Operator '-' auf einen Objektzeiger mit Hilfe von Zeigern zugreifen?

8

Ich beginne gerade ein Qt-Tutorial und ich bin auch ein Anfänger in C ++. Im Qt-Tutorial gibt es ein Beispiel, das eine Anweisung verwendet, um den Text der Schaltfläche festzulegen:

%Vor%

Ich verstehe, dass wir den Operator -> verwenden können, um einem Zeiger den Zugriff auf Member der Klasse zu erlauben. In diesem Fall, pushButton->setText("Hello") , aber ich verstehe einfach nicht die Bedeutung von ui->pushButton , ich suche einige Antworten erklärt, dass die ui die Referenz der pushButton halten, aber wie kann dies getan werden? pushButton ist ein Zeiger auf das Objekt, ist kein Mitglied der Klasse, können wir -> verwenden, um die Objektadresse auf den ui Zeiger zu setzen?

Entschuldigung für meine schlechte Englischsprache, ich kann Sie verwirren. Ich wünschte, jemand könnte mir eine klare Erklärung geben, danke im Voraus.

    
Vito 16.07.2016, 06:25
quelle

2 Antworten

8

Der ui -Zeiger wird aus dem XML generiert, das Sie mit dem Formulareditor von QT Creator erstellen.

Sie finden die automatisch generierte Header-Datei im Ausgabeverzeichnis. Zum Beispiel hat das Hauptfenster ein ui_mainwindow.h . Diese Datei wird erstellt, nachdem Sie qmake ausgeführt haben. Wenn Sie QT Creator verwenden, geschieht dies automatisch.

Hier ist ein Beispiel für eine automatisch generierte ui :

%Vor%

ui ist ein Ui_MainWindow * , so dass Sie -> verwenden können, um auf die Mitglieder der Klasse Ui_MainWindow zuzugreifen, wie zum Beispiel pushButton .

pushButton ist ein QPushButton * , so dass Sie -> verwenden können, um auf die Mitglieder der Klasse QPushButton zuzugreifen, wie zum Beispiel setText() .

ui->pushButton->setText("Hello") entspricht diesem:

%Vor%

Einige Korrekturen:

-> erlaubt einem Zeiger nicht, Dinge zu tun:)

-> ist nur ein Operator für den Zugriff auf Member einer class oder struct und muss auf einen Zeiger angewendet werden. Wenn Sie eine Instanz haben, müssen Sie den Operator . verwenden, um auf die Mitglieder zuzugreifen.

Siehe: Operatoren .

Schließlich eine ähnliche Frage Sie sollten lesen.

    
Szabolcs Dombi 16.07.2016, 06:33
quelle
3

Der "Pfeil" -Operator -> wird verwendet, um Zeiger auf Objekte zu dereferenzieren, um ihre Mitglieder zu erhalten. Wenn Sie also einen Zeiger auf ein Objekt in der Variablen ui haben und das Objekt ein Mitglied pushButton hat, können Sie ui->pushButton verwenden, um auf das pushButton -Member zuzugreifen. Wenn das pushButton Mitglied wiederum ein Zeiger auf ein Objekt ist, dann verwenden Sie -> erneut, um auf seine Mitglieder zuzugreifen, wie zum Beispiel ui->pushButton->setText("Hello") .

Die Verwendung des "Pfeil" -Operators ist im Grunde genommen nur syntaktischer Zucker für den Dereferenzierungsknoten (unary * ) und den Punkt ( . ) des Mitgliedszugriffsoperators.

Also die Aussage

%Vor%

könnte auch als

geschrieben werden %Vor%     
Some programmer dude 16.07.2016 06:31
quelle

Tags und Links