Hi
Vereinfacht dargestellt:
Habe ein ui mit einem QLabel.
Nach Programmstart ui->label->setText("A");
und dann ui->label->setText("B");
Ist kein Problem (Klar, dass man nur "B" sieht - wie schon gesagt vereinfacht dargestellt)
Nun möchte ich jedoch, dass ->label->setText("B"); aus einer Klasse "Teil_B" heraus aufgerufen wird.
Und als Draufgabe: Pushbutton, der setText("C") bewirkt und dessen Slot in "Teil_B" beheimatet ist.
Habe Folgendes versucht:
mainwindow.h: Ganz normal, wie es der Creator erzeugt
--------------
teil_b.h:
#ifndef B_H
#define B_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
class Teil_B
{
public:
explicit Teil_B(Ui::MainWindow *dasUi);
private slots:
void on_pushButton_clicked();
private:
Ui::MainWindow *UIVonMain;
};
#endif // B_H
-----------------
mainwindow.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "teil_b.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->label->setText("A");
// ui->label->setText("B"); Das in Klasse "Teil_B" verschieben.
// Und hier sollte Teil_B aufgerufen werden. Doch wie?
----------------------
teil_b.cpp:
#include "teil_b.h"
Teil_B::Teil_B(Ui::MainWindow *dasUi)
{
qDebug()<<"B gestartet";
UIVonMain = dasUi;
UIVonMain->label->setText("B");
}
void Teil_B::on_pushButton_clicked()
{
qDebug()<<"geklickt";
UIVonMain->label->setText("C");
}
LG
Chri
ui auf mehrere Klassen aufteilen
ui auf mehrere Klassen aufteilen
Die Sprache des Technikers ist die Skizze
Re: ui auf mehrere Klassen aufteilen
Nachtrag zu "Und hier sollte Teil_B aufgerufen werden. Doch wie?"
Es soll doch der pointer übergeben werden, also Teil_B (*ui) Oder?
Das Programm wird zwar ausgeführt, Teil_B jedoch anscheinend vollkommen ignoriert:
Nicht mal qDebug()<<"B gestartet"; wird angezeigt.
LG
Chri
Es soll doch der pointer übergeben werden, also Teil_B (*ui) Oder?
Das Programm wird zwar ausgeführt, Teil_B jedoch anscheinend vollkommen ignoriert:
Nicht mal qDebug()<<"B gestartet"; wird angezeigt.
LG
Chri
Die Sprache des Technikers ist die Skizze
Re: ui auf mehrere Klassen aufteilen
Um dir zu helfen benötige ich etwas mehr Code. Wie und wo instanzierst du deine Klasse Teil_B?
Re: ui auf mehrere Klassen aufteilen
Na ja, das ist eigentlich schon der gesamte Code. (Vom Prinzip her)
Wenn ich alles in mainwindow habe, funktioniert es.
Wenn ich den Code splitten möchte (Teil_B), funktioniert es nicht.
Was ich mir dann erwarte:
Dass nach dem Starten das Label "B" zeigt (So einen langsamen PC, dass man "A" sieht, wird's ja hoffentlich nicht geben )
und wenn man den Pushbutton klickt, soll "C" erscheinen.
LG
Chri
Wenn ich alles in mainwindow habe, funktioniert es.
Wenn ich den Code splitten möchte (Teil_B), funktioniert es nicht.
Was ich mir dann erwarte:
Dass nach dem Starten das Label "B" zeigt (So einen langsamen PC, dass man "A" sieht, wird's ja hoffentlich nicht geben )
und wenn man den Pushbutton klickt, soll "C" erscheinen.
LG
Chri
Die Sprache des Technikers ist die Skizze
Re: ui auf mehrere Klassen aufteilen
Ich habe dir mal ein sehr kleines Beispielprojekt gebaut:
Re: ui auf mehrere Klassen aufteilen
Danke hilefoks für das Beispiel, ist interessant und lehrreich, löst ein Problem, das ich schon mal hatte, ob/wie es mein momentanes Problem löst, muss ich erst behirnen.
LG
Chri
LG
Chri
Die Sprache des Technikers ist die Skizze
Re: ui auf mehrere Klassen aufteilen
Jetzt hab ich den Auslöser des Ganzen schon ganz aus den Augen verloren gehabt:
Wenn man Qtabwidgets verwendet, schreibt QT den Code leider für alle Tabs in die selbe Klasse.
Ich habe z.B. in tab1 Tabellen etc. und in tab2 auch Tabellen etc.
Und als Ergebnis einen Haufen mit Code für alle.
Ich möchte für jeden tab eine eigene Klasse haben, in der auch der ui-Zugriff auf die Objekte des Tabs möglich ist.
Aber abgesehen davon erscheint mir das Ganze logisch:
Ich habe verschiedene "Themen", die in einer gemeinsamen ui dargestellt werden (Und aus dieser ui heraus auch beeinflusst werden).
Der Code für jedes Thema ist in einer eigenen Klasse, von der aus auch die für das Thema relevanten ui-Objekte angesprochen werden können.
Irgendwie wundert es mich, dass das anscheinend so ein exotisches Anliegen ist, für das es eigentlich eine Standardlösung geben sollte...
LG
Chri
Wenn man Qtabwidgets verwendet, schreibt QT den Code leider für alle Tabs in die selbe Klasse.
Ich habe z.B. in tab1 Tabellen etc. und in tab2 auch Tabellen etc.
Und als Ergebnis einen Haufen mit Code für alle.
Ich möchte für jeden tab eine eigene Klasse haben, in der auch der ui-Zugriff auf die Objekte des Tabs möglich ist.
Aber abgesehen davon erscheint mir das Ganze logisch:
Ich habe verschiedene "Themen", die in einer gemeinsamen ui dargestellt werden (Und aus dieser ui heraus auch beeinflusst werden).
Der Code für jedes Thema ist in einer eigenen Klasse, von der aus auch die für das Thema relevanten ui-Objekte angesprochen werden können.
Irgendwie wundert es mich, dass das anscheinend so ein exotisches Anliegen ist, für das es eigentlich eine Standardlösung geben sollte...
LG
Chri
Die Sprache des Technikers ist die Skizze
Re: ui auf mehrere Klassen aufteilen
Ups, das war jetzt ein Blödsinn, was ich über die Qtabwidgets gesagt habe:
Die einzelnen Tabs sind QWidgets, die man auch mit eigenen Klassen ersetzen kann.
Muss ich erst ausprobieren.
LG
Chri
Die einzelnen Tabs sind QWidgets, die man auch mit eigenen Klassen ersetzen kann.
Muss ich erst ausprobieren.
LG
Chri
Die Sprache des Technikers ist die Skizze