Ich versuche, ein Programm in diesem Programm zu machen Ich möchte eine Taste drücken, die Text in einer anderen cpp-Datei verarbeitet und hängt mein QTextEdit an. Ich habe im Grunde genommen als Test nur meine Schaltfläche eingerichtet, um eine Funktion in der anderen Datei auszuführen und auch wenn das Programm startet. Wenn es gestartet wird, druckt es korrekt in den Text Edit sowie in meine Konsole, aber wenn ich meine Taste drücke, wird es nur auf die Konsole und nicht auf meinen TextEdit gedruckt. Für die Funktion, die den Text in meinem TextEdit anfügt und an die Konsole druckt, habe ich es zu einem öffentlichen Slot gemacht, damit ich von meiner anderen Datei darauf zugreifen kann.Zugriff auf die Qt UI von einer externen cpp-Datei
Das ist mein quiz.cpp
#include <iostream>
#include "quiz.h"
#include "ui_quiz.h"
#include "test.h"
Quiz::Quiz(QWidget *parent) : QMainWindow(parent), ui(new Ui::Quiz) {
ui->setupUi(this);
setText();
}
Quiz::~Quiz() {
delete ui;
}
void Quiz::on_actionQuit_triggered() {
QCoreApplication::quit();
}
void Quiz::on_pushButton_clicked() {
run();
}
void Quiz::setText() {
ui->console->append("Hello");
std::cout << "Hello world!" << std::endl;
}
Dieser sein Header ist:
#include "quiz.h"
#include "test.h"
#include "ui_quiz.h"
void run() {
Quiz* quiz = new Quiz();
quiz->setText();
}
und sein Kopf:
#ifndef QUIZ_H
#define QUIZ_H
#include <QMainWindow>
namespace Ui {
class Quiz;
}
class Quiz : public QMainWindow
{
Q_OBJECT
public:
explicit Quiz(QWidget *parent = 0);
~Quiz();
public slots:
void setText();
private slots:
void on_actionQuit_triggered();
void on_pushButton_clicked();
private:
Ui::Quiz *ui;
};
#endif // QUIZ_H
Das ist mein test.cpp ist
#ifndef TEST_H
#define TEST_H
#endif // TEST_H
void run();
Was mache ich falsch? Warum kann ich nicht auf das UI zugreifen, aber der Rest der Funktion läuft?
Sie eine neue Instanz von 'Quiz' in der' run' Funktion erstellen. Es ist nicht dieselbe Instanz, die Sie auf dem Bildschirm zeigen. Rufen Sie 'quiz-> show()' in 'run' auf, damit Sie eine Idee bekommen, was gerade passiert. – thuga