Hi
Vereinfacht dargestellt:
Habe ein ui mit einem QLabel.
Vom Ablauf her:
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 QObject
{
Q_OBJECT
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 (*ui) ; //Wird anscheinend ignoriert
}
----------------------
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:n_pushButton_clicked()
{
qDebug()<<"geklickt";
UIVonMain->label->setText("C");
}
Das Programm wird zwar ausgeführt, Teil_B jedoch anscheinend vollkommen ignoriert:
Nicht mal qDebug()<<"B gestartet"; wird angezeigt.
LG
ChriMo
Vereinfacht dargestellt:
Habe ein ui mit einem QLabel.
Vom Ablauf her:
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 QObject
{
Q_OBJECT
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 (*ui) ; //Wird anscheinend ignoriert
}
----------------------
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:n_pushButton_clicked()
{
qDebug()<<"geklickt";
UIVonMain->label->setText("C");
}
Das Programm wird zwar ausgeführt, Teil_B jedoch anscheinend vollkommen ignoriert:
Nicht mal qDebug()<<"B gestartet"; wird angezeigt.
LG
ChriMo