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.
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
:
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:
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.
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%