ui auf mehrere Klassen aufteilen
Verfasst: 9. Januar 2018 09:39
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
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