immer Wert von QSpinBox erstellt QFormLayout
Ich Frage mich, wie finden die QSpinBox
s I erstellt mit dem code
QFormLayout* layout = new QFormLayout;
layout->addRow(new QLabel(tr("Board Size")), new QSpinBox);
layout->addRow(new QLabel(tr("Number of \nStarting Moves")), new QSpinBox);
layout->addRow(new QLabel(tr("Seed Value")), new QSpinBox);
Dies ist in einer void
Funktion, die erstellt ein Formular, gilt es auf ein QWidget f
und legt dann f
als widget für eine QDockWidget Hinzugefügt werden, ist ein QMainWindow.
Ich dann müssen die Werte in der QSpinBox
s für die Ausführung einer anderen Funktion, aber ich habe keine Ahnung, wie das zu unterscheiden oder einen Verweis auf die Boxen. Ich weiß QSpinBox
s haben eine value()
Funktion, aber wie rufe ich das auf jeder anderen box?
Sorry, wenn ich mit Qt in einer ungewöhnlichen Art und Weise, ich bin neu in der Qt-Programmierung. Auch möchte ich nicht verwenden, jede visuelle Programmierung, möchte ich code alles. Vielen Dank im Voraus!
InformationsquelleAutor user2259966 | 2013-04-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zuerst - erstellen von widgets ohne Angabe der Eltern ist ein potenzielles Speicherleck, so dass Sie sollten es nicht tun, es sei denn, Sie wissen genau, was Sie tun.
Zweite von all, wenn Sie wollen verwenden Sie einige Wert in Ihrer Klasse - sollten Sie einen Zeiger auf ein Element der Klasse und Ihrer Adresse an die es durch den Namen (wie Aliceljm hat).
Können Sie auch
void QFormLayout::addRow ( const QString & labelText, QWidget * field )
um, nicht um Etiketten zu erstellen-manuell (wenn Sie nicht brauchen einen direkten Zugang zu Ihnen).Zusammenfassend alle oben genannten, Ihre endgültige code sollte enthalten:
Widget.h
Widget.cpp
Ja, ich erinnere mich, Lesen über einige Zeit. Aber beim schreiben dieser Antwort, ich schaute durch Qt Hilfe und nicht finden diese Informationen. Wie auch immer, ich glaube wirklich, dass in einem guten code, den Sie angeben sollten Eltern von
QObject
Erbe (es sei denn, Sie wirklich brauchen nicht Ihr Objekt einen Elternteil).Hier ist es: qt-project.org/doc/qt-4.8/qlayout.html#addItem
Es sagt tatsächlich, dass über das Eigentum QLayoutItem, nicht QWidget. Dennoch fand ich diese Informationen hier: qt-project.org/doc/qt-4.8/layout.html#tips-for-using-layouts in der Tat, Sie haben Recht.
InformationsquelleAutor Amartel
Ich denke, Sie sollten dies so tun:
Einen Zeiger bekommen kann spinbox Wert überall
InformationsquelleAutor Aliceljm
Dies ist Ihr code.
Dies ist Ihre andere Funktion, wo man wollte, um den Verweis spinbox.
/* zu erreichen ist die Referenz der spinbox, müssen Sie zuerst das dockwidget, dann auf widget, dann layout, dann
genaue Zeile und Spalte, dann erreichen Sie spinbox
Sehen Sie, es ist zu kompliziert, Qt ist toll, es ist einfach keine API, um die DockWidget, was Sie Hinzugefügt haben, in der mainwindow( außer tabifiedDockWidgets API ).
das heißt also, Sie haben zu ändern, die Implementierung der Logik, der oben wiedergegeben, die Antworten korrekt sind. das ist die Art von Ansatz, beachten Sie, dass das Konzept der signal/slot ist spielen eine große Rolle, um den Zugriff auf die spibox in einer anderen Funktion.*/
Signal/slot wird verwendet werden, um dieses Problem zu lösen.
Bitte verwenden Sie obige Antwort gepostet mit diesem code
Ihre slot.
InformationsquelleAutor