"ui->label.setText ..." in Funktion einbinden
-
Hallo,
Ich wollte mal fragen wie man bei QT
Befehle wie z.Bui->label.setText("lol");
in eine funktion einbindet
Wenn ich das versuche kommt beim kompilieren folgender Fehler:
C:/Users/Administrator/Documents/tic-tac-toe/mainwindow.cpp:125: error: 'ui' was not declared in this scope
ich hoffe ihr könnt mir weiter helfen
mfG
-
Das hat jetzt nichts mit Qt zu tun, das ist pures C++-Basic.
Dem Complier ist an der Stelle ein "ui" einfach nicht bekannt! Du musst das in dem Scope verfügbar machen.
Da das wohl die ui für dein MainWindow ist, gibst du einfach der Klasse MainWindow einen passenden Member "ui".
Wenn es das nicht ist brauchen wir mehr Infos...
-
Das ist kein Befehl! Befehle gibt es in C++ nicht!
Wenn dir nicht klar ist, wie man dies umsetzt, solltest du dich erstmal mit der Programmiersprache C++ beschäftigen, das ist die unabdingbare Grundlage wenn du mit Qt arbeiten willst!
-
ich hätte vieleicht noch sagen sollen, dass ich der totale Programieranfänger bin.
Redest du von mainwindow.h?
weil in meinen Augen sieht es so aus also ob "ui" schon im scope ist.#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = 0); ~MainWindow(); protected: void changeEvent(QEvent *e); private: Ui::MainWindow *ui; private slots: void on_pushButton_hide_clicked(); void on_MainWindow_iconSizeChanged(QSize iconSize); void on_pushButton_9_clicked(); void on_pushButton_7_clicked(); void on_pushButton_8_clicked(); void on_pushButton_6_clicked(); void on_pushButton_5_clicked(); void on_pushButton_4_clicked(); void on_pushButton_3_clicked(); void on_pushButton_2_clicked(); void on_pushButton_1_clicked(); }; #endif // MAINWINDOW_H
-
Und wo und wie verwendest du jetzt das ui?
-
ich hab keine ahnung...
ich up sofort mal den kompletten code.Edit:
Codewand incoming:
mainwindow.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = 0); ~MainWindow(); protected: void changeEvent(QEvent *e); private: Ui::MainWindow *ui; private slots: void on_pushButton_hide_clicked(); void on_MainWindow_iconSizeChanged(QSize iconSize); void on_pushButton_9_clicked(); void on_pushButton_7_clicked(); void on_pushButton_8_clicked(); void on_pushButton_6_clicked(); void on_pushButton_5_clicked(); void on_pushButton_4_clicked(); void on_pushButton_3_clicked(); void on_pushButton_2_clicked(); void on_pushButton_1_clicked(); }; #endif // MAINWINDOW_H
mainwindow.cpp (Hier kann man auch gut sehen warum ich das gerne als funktion hätte.)
#include "mainwindow.h" #include "ui_mainwindow.h" #include "qmessagebox.h" int i_xo = 0; QString test = "empty"; QString lol = "O"; QString olo; QString win1 = "x1"; QString win2 = "x2"; QString win3= "x3"; QString win4= "x4"; QString win5= "x5"; QString win6= "x6"; QString win7= "x7"; QString win8= "x8"; QString win9= "x9"; QString mbtitel = "Winner"; QString mbtext; int xo() { if (i_xo == 1 || i_xo == 3 || i_xo == 5 || i_xo == 7 || i_xo == 9) { lol = "O"; olo = "X"; } if (i_xo == 2 || i_xo == 4 || i_xo == 6 || i_xo == 8 || i_xo == 10) { lol = "X"; olo = "O"; } mbtext = "Spieler " + lol + " hat gewonnen"; return 1; } int end() { test = "end"; return 1; } int winx() { if ((win1 == win2 && win2 == win3)|| (win4 == win5 && win5 == win6) || (win7 == win8 && win8 == win9) || (win1 == win4 && win4 == win7) || (win2 == win5 && win5 == win8) || (win3 == win6 && win6 == win9) || (win1 == win5 && win5 == win9) || (win7 == win5 && win5 == win3) ) end(); return 1; } int endgame() // hier ist das Problem { ui->pushButton_1->setDisabled(true); ui->pushButton_2->setDisabled(true); ui->pushButton_3->setDisabled(true); ui->pushButton_4->setDisabled(true); ui->pushButton_5->setDisabled(true); ui->pushButton_6->setDisabled(true); ui->pushButton_7->setDisabled(true); ui->pushButton_8->setDisabled(true); ui->pushButton_9->setDisabled(true); ui->pushButton_hide->setText("Reset"); ui->pushButton_hide->setFlat(false); ui->pushButton_hide->setEnabled(true); ui->label->setText(lol); i_xo = 0; } MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::changeEvent(QEvent *e) { QMainWindow::changeEvent(e); switch (e->type()) { case QEvent::LanguageChange: ui->retranslateUi(this); break; default: break; } } void MainWindow::on_pushButton_1_clicked() { i_xo++; xo(); ui->pushButton_1->setText(lol); ui->pushButton_1->setDisabled(true); win1 = lol; winx(); if (test == "end") { QMessageBox::information(this, mbtitel, mbtext, QMessageBox::Ok); endgame(); // <----------------------------------------------------------- } else ui->label->setText(olo); } /* * * * */ void MainWindow::on_pushButton_hide_clicked() { ui->pushButton_1->setText(""); ui->pushButton_1->setEnabled(true); ui->pushButton_2->setText(""); ui->pushButton_2->setEnabled(true); ui->pushButton_3->setText(""); ui->pushButton_3->setEnabled(true); ui->pushButton_4->setText(""); ui->pushButton_4->setEnabled(true); ui->pushButton_5->setText(""); ui->pushButton_5->setEnabled(true); ui->pushButton_6->setText(""); ui->pushButton_6->setEnabled(true); ui->pushButton_7->setText(""); ui->pushButton_7->setEnabled(true); ui->pushButton_8->setText(""); ui->pushButton_8->setEnabled(true); ui->pushButton_9->setText(""); ui->pushButton_9->setEnabled(true); ui->pushButton_hide->setText(""); ui->pushButton_hide->setFlat(true); ui->pushButton_hide->setDisabled(true); i_xo = 0; test = "empty"; lol = "O"; olo = "O"; win1 = "x1"; win2 = "x2"; win3= "x3"; win4= "x4"; win5= "x5"; win6= "x6"; win7= "x7"; win8= "x8"; win9= "x9"; ui->label->setText(olo); }
-
Und was steht in Zeile 125 (bitte samt komplettem Umfeld....), ich nehme an die in deinem post mit "125" markierte Zeile entspricht nicht Zeile 125 in deinem Code.
Denn prinzipiell erkenn ich keinen Fehler, der zu dieser Meldung führen könnte...
Ist aber auch wirklich wirr mit den ganzen globalen Objekten... Das löst du besser mit SIGNAL/SLOT.
-
Wenn du Anfänger bist, solltest du dich erstmal mit der Sprache beschäftigen, bevor du GUI Programmierung machst...
C++ Tutorials:
http://highscore.de/cpp/einfuehrung/titelseite.html
http://highscore.de/cpp/aufbau/titelseite.html
-
l'abra d'or schrieb:
Und was steht in Zeile 125 (bitte samt komplettem Umfeld....), ich nehme an die in deinem post mit "125" markierte Zeile entspricht nicht Zeile 125 in deinem Code.
Denn prinzipiell erkenn ich keinen Fehler, der zu dieser Meldung führen könnte...
Ist aber auch wirklich wirr mit den ganzen globalen Objekten... Das löst du besser mit SIGNAL/SLOT.Das ist der funktionierende Code
Die Funktion die nicht funktioniert hat ist deshalb logischerweise nicht dabei.
Ich dachte ihr könntet mir so vllt besser sagen was ich ändern muss damit ich eine Funktion mit ui-> ... schreiben kann.
-
haesslich schrieb:
Die Funktion die nicht funktioniert hat ist deshalb logischerweise nicht dabei.
Ich dachte ihr könntet mir so vllt besser sagen was ich ändern muss damit ich eine Funktion mit ui-> ... schreiben kann.Das ist Käse, sry. Du schreibst ja hoffentlich auch nicht
Ich hab Probleme beim übersetzen Englisch-Deutsch. in Zeile 25.
Und ist doch logisch, dass ich nur den Text angeb, bei dem ich keine Probleme hab.
Wenn du Probleme mit bestimmtem Code hast, dann brauchen wir DIESEN Code, nicht welchen der schon funktioniert!
Ich kann mir sehr gut vorstellen wo das Problem liegt. Aber ewig nur raten macht auch wenig Spaß.Du kannst auf das private ui aus deiner Klasse nicht aus einer freien Funktion zugreifen. Pack alle Fuktionen, die auf ui zugreifen wollen, in die Klasse.
-
ok habs editiert. Ich hoffe es ist jetzt verständlich genug wo mein Problem ist.
-
haesslich schrieb:
ok habs editiert. Ich hoffe es ist jetzt verständlich genug wo mein Problem ist.
Da war ja meine Vermutung genau richtig. Ich zitier mach mal selber:
Du kannst auf das private ui aus deiner Klasse nicht aus einer freien Funktion zugreifen. Pack alle Fuktionen, die auf ui zugreifen wollen, in die Klasse.
-
ok danke...
habs nun hinbekommmfG