Seite 1 von 1

ui setText Anfänger Frage

Verfasst: 4. Januar 2016 17:36
von Nepolo
Hallo zusammen,
ich habe einen Anfänger Frage.
UI steht in meiner Funktion settText nicht zu Verfügung.
void settText(){ui->textBrowser->setText("test");// GEHT NICHT}

In MainWindow::on_pushButton_clicked kann ich das
void MainWindow::on_pushButton_clicked(){ui->textBrowser->setText("test");// GEHT}

Wie kann ich in am einfachsten in der Funktion settText() auf die GUI zugreifen?

Danke Nepolo

Code: Alles auswählen

#include "mainwindow.h"

#include "ui_mainwindow.h"
#include <QApplication>
#include <QHostInfo>
#include <iostream>
#include <QDebug>
#include <QStringList>
#include <iostream>
using namespace std;


void settText()
{
   //ui->textBrowser->setText("test"); GEHT NICHT
}

MainWindow::MainWindow(QWidget *parent) :
   QMainWindow(parent),
   ui(new Ui::MainWindow)
{
   ui->setupUi(this);

}

MainWindow::~MainWindow()
{
   delete ui;
}

void MainWindow::on_pushButton_clicked()
{
   ui->textBrowser->setText("test");// GEHT
}

Re: ui setText Anfänger Frage

Verfasst: 5. Januar 2016 07:21
von Christian81
Deine Funktion ist nicht in der Klasse MainWindow - wie sollte sie also auf Member-Variablen dieser Klasse zugreifen können? Warum sollte diese Funktion, die zu keiner Klasse gehört (warum auch immer dies der Fall sein sollte) auf klasseninterne Variablen zugreifen können?

Re: ui setText Anfänger Frage

Verfasst: 5. Januar 2016 12:48
von Nepolo
Hallo Christian81.
Ich bin ja eher Anfänger.
Die Frage nachdem wieso ist einfach. Ich möchte das gerne. ;-)
Ich habe einige kleine Programme mit VB.net programmiert.
Dort kann ich aus eine Funktion heraus auf die GUI zugreifen.

Ich möchte gerne ein einfaches kleines Programm ohne Klassen schreiben.
Das scheint aber nicht so einfach zu sein.
Man wird wohl gezwungen sich mit Klassen zu beschäftigen.

Wie bringe ich denn meine Funktion in der Klasse MainWindow?

Grüße Nepolo

Re: ui setText Anfänger Frage

Verfasst: 26. Februar 2016 10:18
von Fenriswolf
Hallo Nepolo,
du kommst bei C++ kaum darum herum dich mit Klassen zu beschäftigen.
Bei einer kleinen Konsolen-Anwendung mag das noch gehen, sobald du aber Anfängst mit der GUI zu arbeiten, wirst du dich damit (zumidest etwas) beschäftigen müssen.

zu deinem Problem hast du zwei möglichkeiten:
1. du trägst deine Funktion mit in die MainWindow-Klasse ein und arbeitest damit innerhalb der Klasse (eig das selbe, wie ohne Klassen zu arbeiten)
2. du übergibst du Klasse an die Funktion (Quelle: http://stackoverflow.com/questions/1623 ... s-function)
was in diesem Fall jedoch nicht funktioniert, da du nur innerhalb der Klasse auf die Ui zugreifen kannst (private) (dies wiederum lässt sich mit ein paar Kniffen gekonnt umgehen, gehört aber aktuell nicht zu deiner Frage ;))