QT Signal & Slot - wie uebergebe ich einen Pointer ?



  • Hallo,

    ich möchte mit einem Signal der Klasse a einen Pointer auf eine Variable zum Slot der Klasse b schicken, damit ich in b die Variable benutzen kann.

    Nur kriege ich das nicht hin - kann mir einer sagen, wie die Signal und Slot definitionen dann heissen sollten und wie der QObject::connect aufruf lauuten muss damit es funktioniert?

    class a : public QObject
    {
    private:
    	Q_OBJECT
    
    public:
    	QString TestString;
    
    	void initSend()
    	{
    		emit sendPointer ( ??? );
    		return;
    	}
    
    signals:
    	void sendPointer ( ??? );
    
    }; // class a 
    
    class b : public QObject
    {
    private:
    	Q_OBJECT
    
    public:
    	QString *mybpointer;
    
    public slots:
    	void getPointer ( ??? mybpointer )
    	{
    		cout << "1: " << *mybpointer << endl;
    	}
    
    }; // class b
    
    int main()
    {
    	a myA;
    	b myB;
    	QObject::connect ( myA,SIGNAL( sendPointer ( ??? ) ) ,myB,SLOT( getPointer( ??? ) ) )
    	myA.initSend();
    	return 0;
    }
    
    #include "main.moc"
    

    Danke,

    need_input



  • Hallo!

    Einen Pointer auf eine Variable vom Typ T kannst Du mit dem Signal

    void sendPointer(T *pt);

    dem Slot

    void getPointer(T *pt);

    übergeben. Verbunden wird mit

    connect ( myA,SIGNAL(sendPointer (T 😉 ) ,myB,SLOT( getPointer(T 😉 ) );

    Ist T=QString dann wird ein Zeiger auf TestString mit

    emit sendPointer(&TestString);

    übergeben.

    Viele Grüße
    Th.

    P.S.: Wenn es nur um den Variablenzugriff geht kannst Du auch T & statt T * verwenden.


Anmelden zum Antworten