2016-06-02 11 views
0

Ich habe ein UI-Designer-Objekt namens workspace erstellt und es gibt ein Objekt mit dem Namen myForm für meine benutzerdefinierte Klasse namens CustomForm befördert. Und jetzt möchte ich auf das Objekt myForm in anderen Klassen zugreifen, aber ich scheitere. In Workspace-Member-Funktionsdefinition, Zugriff auf myForm über ui->myForm, wie kann ich in anderen Klassen zugreifen?QT5 Wie auf Objekt in ui Designer zugreifen?

+2

Bitte seien Sie spezifisch und zeigen Sie ein minimales Beispiel. Ich kann nur erraten, was dein Problem ist. Wenn Sie von außerhalb Ihrer UI-basierten Klasse auf Ihr Formular zugreifen möchten, müssen Sie daran denken, dass die UI standardmäßig privat ist. Zugriff auf ui-Elemente direkt von außerhalb der ui-basierten Klasse ist trivial durch z.B. Accessor-Funktionen schreiben, ist aber (generell) eine wirklich schlechte Idee (design-weise). – OnWhenReady

Antwort

2

Sie können nicht direkt darauf zugreifen, da ui generell privat ist.

Sie können jedoch eine Getterfunktion (CustomForm *myForm()) hinzufügen, die ui->myForm an Ihre Workspace-Klasse zurückgibt.

+0

Danke, es hilft mir – Asuka

+0

OnWhenReady [Kommentar] (http://stackoverflow.com/questions/37585269/qt5-how-to-access-object-in-ui-designer/37585912?noredirect=1#comment62657202_37585912) ist auch gut im Gedächtnis behalten, da Sie Kinder-Widgets generell nicht aufdecken möchten. Wenn Sie einen direkten Zugriff auf ein untergeordnetes Widget benötigen, kann dies ein Zeichen für einen Fehler in Ihrem Softwaredesign sein. –