Ich bin neu in C++ und Qt und ich versuche, auf ein Widget von einer Elternklasse zugreifen.C++ Zugriff auf Eltern Widgets von einer Funktion
Hier ist meine mainwindow.cpp
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
ich eine andere Klasse, und ich versuche, in dieser Klasse ein Widget von „ui“ zuzugreifen. Wie so:
Das gibt mir einen Fehler, der besagt, dass die Methoden und Felder nicht aufgelöst werden konnten. Aber wenn ich die Zeile parent->ui->menuSL->setCurrentIndex(0);
in den Konstruktor setze, gibt es kein Problem.
Würde jemand bitte meinen Fehler aufzeigen?
Sie sollten lieber ein Signal in Ihrer 'DashBoard :: select()' -Funktion ausgeben und es entweder mit dem 'setCurrentIndex (int)' -Schlitz Ihres 'menSL' -Objekts oder mit einer Funktion in Ihrer' MainWindow'-Klasse verbinden. – thuga
Ich stimme mit thuga überein. Ein Signal von DashBoard zu emittieren ist ein besserer Ansatz. – drescherjm
Ich würde nicht empfehlen, direkt auf 'ui' Ihrer Eltern zuzugreifen. Stattdessen leiten Sie Ihre Eltern von einer Schnittstelle mit definierten Accessor-Methoden ab, die von Ihrem Kind aufgerufen werden können. Beispielaufruf: dynamic_cast (parent()) -> SetMenu (0); Oder verwenden Sie das Signal/Slot-Konzept. –
bkausbk