QT: Auf Formular zugreifen
-
Hi,
Ich habe einen Timer in meinem Programm in der MainWindow.cpp eingebaut:
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); QTimer *refresh = new QTimer; refresh->start(3000); connect(refresh, SIGNAL(timeout()), this, SLOT(FormularAktualisieren())); }
Die Funktion FormularAktualisieren ist in einer anderen Datei und soll das Formular aktualisieren. Dazu muss ich aber auf das Formular zugreifen können. Normalerweise mache ich das über "ui", aber leider ist "ui" in der Datei nicht deklariert.
Kann ich das "ui" irgendwie als Funktionsparameter von FormularAktualisieren() mitgeben ?
Sowas
private slots: void FormularAktualisieren(MainWindow ui);
funktioniert jedenfalls nicht.
Hat jemand eine Idee ?
Danke,
lusches
-
FormularAktualisieren zu einer Member-Funktion von MainWindow machen? Ist das natürlichste.
Aber einen Timer alle 3 Sekunden das komplette Formular ändern ist nicht so dolle. Was ist der Grund für deiner Annahme, dies sei notwendig?
-
Der Grund ist einfach, dass ich gewisse Daten in Dateien speichern will, die dann in einem ListWidget angezeigt werden sollen. Man soll also die Datei zum Laden aus der Liste auswählen können.
Nachdem ich die "ui_mainwindow.h" includiert habe kann ich auch aus anderen Dateien darauf zugreifen.
Gruß,
lusches
-
Und wofür dann eine extra Klasse? Wofür den Timer? Wenn es dir ums Auswählen geht - Zeilen anclicken löst ein SIGNAL aus, das du abfangen kannst. Und Dateien laden kannst du auch im MainWindow.
-
Warum ist 'FormularAktualisieren()' nicht in MainWindow.cpp', wo ist es dann?
Wenn es sich um eine QWidget abgeleitet Klasse handlet die du in MainWindow nur lädst, dann gehört FormularAktualisieren() in diese Klasse als slot. Den ui Pointer herumzureichen ist keine gute Idee.
Übrigens bezeichnet ist es üblich im Quellcode alles auf englisch zu schreiben. Am besten auch die Kommentare/Dokumentation.
-
pospiech schrieb:
Übrigens bezeichnet ist es üblich im Quellcode alles auf englisch zu schreiben. Am besten auch die Kommentare/Dokumentation.
Sprache ist doch wurscht, so lange es entweder rein privat ist, oder nur in einer Sprache verfügbar sein soll und alle Programmierer mit der Benennung in Deutsch einverstanden sind. Dann aber bitte konsequent: MainWindow -> HauptFenster