<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Übertragen von Membervariablen zweier fremder Qt-bezogenen Klassen]]></title><description><![CDATA[<p>Hallo Leute,<br />
folgendes Problem:<br />
Ich habe in einem mit Qt-Creator erzeugten Projekt zwei selbstdefinierte Klassen, die nicht voneinander abgeleitet sind. Die eine Klasse ist von QDialog und die andere von QGLWidget abgeleitet.<br />
Von beiden selbstdefinierten Klassen wird je ein Objekt in der main.cpp erzeugt und angezeigt.<br />
Die von QDialog abgeleitete Klasse beschreibt eine GUI, in der durch drücken eines QPushButtons die Variable &quot;anzDr&quot; initialisiert wird. Diese Variable wird nun im Objekt der anderen, von QGLWidget abgeleiteten Klasse benötigt.<br />
Frage: Wie kann der Transfer gestaltet werden?</p>
<p>maindialog.h:</p>
<pre><code>#ifndef MAINDIALOG_H
#define MAINDIALOG_H

#include &lt;QDialog&gt;
#include &quot;ui_maindialog.h&quot;

class MainDialog : public QDialog, public Ui::MainDialog
{
    Q_OBJECT

public:
    MainDialog(QWidget *parent = NULL);
    ...
public slots:
    void readFromStlClicked(); /*diese Slot-Funktion liest auf Knopfdruck einen Integer-Wert aus einer stl-Datei aus und speichert diesen in &quot;anzDr&quot;*/  
private:
    unsigned long int anzDr;
    ...
};
#endif // MAINDIALOG_H
</code></pre>
<p>aus maindialog.cpp:</p>
<pre><code>...    
connect(pushButton,SIGNAL(clicked()),
            this,SLOT(readFromStlClicked()));
...
</code></pre>
<p>tetrahedron.h:</p>
<pre><code>#ifndef TETRAHEDRON_H
#define TETRAHEDRON_H

#include &lt;QGLWidget&gt;

class Tetrahedron : public QGLWidget
{
    Q_OBJECT

public:
    Tetrahedron(QWidget *parent = 0);
    ...

private:
    unsigned long int anzDr;
};

#endif
</code></pre>
<p>main.cpp:</p>
<pre><code>#include &lt;QApplication&gt;
#include &lt;iostream&gt;
#include &quot;tetrahedron.h&quot;
#include &quot;maindialog.h&quot;
using namespace std;

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    ...

    MainDialog dialog;
    dialog.show();

    Tetrahedron tetrahedron;
    ...

    tetrahedron.show();

    return app.exec();
}
</code></pre>
<p>Das Problem ist: Wenn ich die &quot;anzDr&quot;-Variable einfach per<br />
objectName.get()-Funktion oder mit einer</p>
<pre><code>friend unsigned long int freund(MainDialog, Tetrahedron) {...}
</code></pre>
<p>in der main.cpp hole, dann wird die anzDr überschrieben, bevor das manuelle Initialisieren auf Knopfdruck in der GUI erfolgen kann.<br />
Muss in dem Fall direkt aus der einen Klasse auf die andere Klasse zugegriffen werden (was bisher natürlich nicht geklappt hat) oder wie kann man hier überhaupt vorgehen?</p>
<p>Vielen Dank für eure Hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/327650/übertragen-von-membervariablen-zweier-fremder-qt-bezogenen-klassen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Jul 2026 14:30:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/327650.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 25 Aug 2014 09:49:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Übertragen von Membervariablen zweier fremder Qt-bezogenen Klassen on Mon, 25 Aug 2014 09:49:52 GMT]]></title><description><![CDATA[<p>Hallo Leute,<br />
folgendes Problem:<br />
Ich habe in einem mit Qt-Creator erzeugten Projekt zwei selbstdefinierte Klassen, die nicht voneinander abgeleitet sind. Die eine Klasse ist von QDialog und die andere von QGLWidget abgeleitet.<br />
Von beiden selbstdefinierten Klassen wird je ein Objekt in der main.cpp erzeugt und angezeigt.<br />
Die von QDialog abgeleitete Klasse beschreibt eine GUI, in der durch drücken eines QPushButtons die Variable &quot;anzDr&quot; initialisiert wird. Diese Variable wird nun im Objekt der anderen, von QGLWidget abgeleiteten Klasse benötigt.<br />
Frage: Wie kann der Transfer gestaltet werden?</p>
<p>maindialog.h:</p>
<pre><code>#ifndef MAINDIALOG_H
#define MAINDIALOG_H

#include &lt;QDialog&gt;
#include &quot;ui_maindialog.h&quot;

class MainDialog : public QDialog, public Ui::MainDialog
{
    Q_OBJECT

public:
    MainDialog(QWidget *parent = NULL);
    ...
public slots:
    void readFromStlClicked(); /*diese Slot-Funktion liest auf Knopfdruck einen Integer-Wert aus einer stl-Datei aus und speichert diesen in &quot;anzDr&quot;*/  
private:
    unsigned long int anzDr;
    ...
};
#endif // MAINDIALOG_H
</code></pre>
<p>aus maindialog.cpp:</p>
<pre><code>...    
connect(pushButton,SIGNAL(clicked()),
            this,SLOT(readFromStlClicked()));
...
</code></pre>
<p>tetrahedron.h:</p>
<pre><code>#ifndef TETRAHEDRON_H
#define TETRAHEDRON_H

#include &lt;QGLWidget&gt;

class Tetrahedron : public QGLWidget
{
    Q_OBJECT

public:
    Tetrahedron(QWidget *parent = 0);
    ...

private:
    unsigned long int anzDr;
};

#endif
</code></pre>
<p>main.cpp:</p>
<pre><code>#include &lt;QApplication&gt;
#include &lt;iostream&gt;
#include &quot;tetrahedron.h&quot;
#include &quot;maindialog.h&quot;
using namespace std;

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    ...

    MainDialog dialog;
    dialog.show();

    Tetrahedron tetrahedron;
    ...

    tetrahedron.show();

    return app.exec();
}
</code></pre>
<p>Das Problem ist: Wenn ich die &quot;anzDr&quot;-Variable einfach per<br />
objectName.get()-Funktion oder mit einer</p>
<pre><code>friend unsigned long int freund(MainDialog, Tetrahedron) {...}
</code></pre>
<p>in der main.cpp hole, dann wird die anzDr überschrieben, bevor das manuelle Initialisieren auf Knopfdruck in der GUI erfolgen kann.<br />
Muss in dem Fall direkt aus der einen Klasse auf die andere Klasse zugegriffen werden (was bisher natürlich nicht geklappt hat) oder wie kann man hier überhaupt vorgehen?</p>
<p>Vielen Dank für eure Hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2414822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2414822</guid><dc:creator><![CDATA[bleifrei]]></dc:creator><pubDate>Mon, 25 Aug 2014 09:49:52 GMT</pubDate></item><item><title><![CDATA[Reply to Übertragen von Membervariablen zweier fremder Qt-bezogenen Klassen on Mon, 25 Aug 2014 09:59:02 GMT]]></title><description><![CDATA[<p>MainDialog könnte selbst ein Signal emittieren, quasi sigAnzahlChanged.</p>
<p>In der main verbindest du</p>
<pre><code>connect(mainDialog, SIGNAL(sigAnzahlChanged(unsigned long int),
        tetrahedron, SLOT(....));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2414823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2414823</guid><dc:creator><![CDATA[nurf]]></dc:creator><pubDate>Mon, 25 Aug 2014 09:59:02 GMT</pubDate></item><item><title><![CDATA[Reply to Übertragen von Membervariablen zweier fremder Qt-bezogenen Klassen on Mon, 25 Aug 2014 12:49:08 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18674">@nurf</a>: Also eine connect-Fkt klingt gut, bin mir nicht sicher wie genau die hier angewandt wird aber hier ist ein Versuch:</p>
<p>main.cpp:</p>
<pre><code>#include &lt;QApplication&gt;
#include &lt;iostream&gt;
#include &quot;tetrahedron.h&quot;
#include &quot;maindialog.h&quot;
using namespace std;

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    MainDialog *dialog = new MainDialog;
    dialog-&gt;show();
    Tetrahedron *tetrahedron = new Tetrahedron(QWidget *parent,
                                               MainDialog *dialog);
    tetrahedron-&gt;show();
    QObject::connect(dialog-&gt;pushButton, SIGNAL(clicked()),
                     tetrahedron, SLOT(speichereDreiecke()));
    return app.exec();
}
</code></pre>
<p>maindialog.h:</p>
<pre><code>#include &lt;QDialog&gt;
#include &quot;ui_maindialog.h&quot;
#include &quot;tetrahedron.h&quot;

class MainDialog : public QDialog, public Ui::MainDialog
{
    Q_OBJECT
public:
    MainDialog(QWidget *parent = 0) ;
    unsigned long int leseDreiecke(void) { return anzDr; }
public slots:
    void readFromStlClicked();
private:
    unsigned long int anzDr;
};
</code></pre>
<p>tetrahedron.h:</p>
<pre><code>#ifndef TETRAHEDRON_H
#define TETRAHEDRON_H
#include &quot;maindialog.h&quot;

class Tetrahedron : public QGLWidget
{
    Q_OBJECT
public:
    Tetrahedron(QWidget *parent = 0, MainDialog *dialog);
    void speichereDreiecke();
private:
    unsigned long int anzDrNEU;
};
</code></pre>
<p>tetrahedron.cpp:</p>
<pre><code>#include &quot;tetrahedron.h&quot;
...
Tetrahedron::Tetrahedron(QWidget *parent, MainDialog *dialog)
    : QGLWidget(parent)
{
    setFormat(QGLFormat...
}
...
void Tetrahedron::speichereDreiecke() {
    anzDrNEU = dialog-&gt;leseDreiecke();
}
</code></pre>
<p>Wenn der &quot;pushButton&quot; gedrückt wird, wird die Funktion &quot;speichereDreiecke()&quot; aufgerufen, die wiederum auf die Fuktion &quot;leseDreiecke()&quot; vom Objekt &quot;dialog&quot; zurückgreift, nur das Übertragen des Objektes der Klasse MainDialog in den Konstruktor von Tetrahedron scheint nicht zu funktionieren...<br />
Fehler:<br />
'Tetrahedron::Tetrahedron': fehlender Standartparameter fr Parameter2 tetrahedron.h<br />
dadurch wird &quot;dialog&quot; tetrahedron.cpp zum nichtdeklarierten Bezeichenr<br />
Kann das so in etwa funktionieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2414844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2414844</guid><dc:creator><![CDATA[bleifrei]]></dc:creator><pubDate>Mon, 25 Aug 2014 12:49:08 GMT</pubDate></item><item><title><![CDATA[Reply to Übertragen von Membervariablen zweier fremder Qt-bezogenen Klassen on Mon, 25 Aug 2014 14:34:48 GMT]]></title><description><![CDATA[<p>Die Idee war, dass der MainDialog ein Signal emittiert. -&gt; Siehe Q_EMIT<br />
Der Rest konnte so bleiben wie er war.<br />
Es Bedarf keiner direkten Verbindung zwischen Tetrahedron und MainDialog.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2414868</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2414868</guid><dc:creator><![CDATA[nurf]]></dc:creator><pubDate>Mon, 25 Aug 2014 14:34:48 GMT</pubDate></item></channel></rss>