Anzeige:
Ergebnis 1 bis 4 von 4

Thema: [QT4] Ermitteln des SIGNAL Handlers/Senders

  1. #1
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255

    [QT4] Ermitteln des SIGNAL Handlers/Senders

    Gibt es unter QT4 eine Möglichkeit den SIGNAL Sender zu ermitteln?
    Wenn jetzt ui.bin_* editingFinished() Sendet. Kann ich Irgendwie herausfinden welcher der drei Objecte das Signal gesendet hat?
    PHP-Code:

    #include <QMessageBox>

    #include "qotrdecoder.h"

    qotrdecoder::qotrdecoder()
    {
        
    ui.setupUi(this);
    //     connect( ui.btn_cancel, SIGNAL( clicked() ), this, SLOT( SlotTester() ) );
    //     connect( ui.btn_decode, SIGNAL( clicked() ), this, SLOT( SlotTester() ) );
    //     connect( ui.btn_open_bin, SIGNAL( clicked() ), this, SLOT( SlotTester() ) );
    //     connect( ui.btn_open_key, SIGNAL( clicked() ), this, SLOT( SlotTester() ) );
    //     connect( ui.btn_open_dir, SIGNAL( clicked() ), this, SLOT( SlotTester() ) );
        
    connectui.inp_binSIGNALeditingFinished() ), thisSLOTSlotStringTester() ) );
        
    connectui.inp_key_fileSIGNALeditingFinished() ), thisSLOTSlotStringTester() ) );
        
    connectui.inp_outputSIGNALeditingFinished() ), thisSLOTSlotStringTester() ) );
    }

    void qotrdecoder::SlotTester()
    {
        
    QMessageBox::warning( new QWidget(), "SlotTester"QString"Slot Tester" ) );
    }

    void qotrdecoder::SlotStringTester()
    {
        
    QString in;
            
    // Hier wuerde ich jetzt gerne das Object des Signal Handlers ermitteln
        
    in.appendui.inp_bin->text() );
        
    QMessageBox::warning( new QWidget(), "SlotStringTester"in );
    }

    qotrdecoder::~qotrdecoder()
    {} 
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  2. #2
    Registrierter Benutzer
    Registriert seit
    18.03.2005
    Beiträge
    211
    da der die slots und Signale uber Funktionspointer verknotet, solltest da keine chance haben... du kannst die bestehenden Verbindung zwar rausbekommen (damit alle moeglichen Sender), aber nicht den wirklichen Absender.

    Ist z.b. in windows in der MsgPump genau so ... wenn ne message da reingestellt wird, iss keine info mehr hinterlegt, wer das gewesen ist.

    Wenn du sowas wissen willst, deutet das meist auf ne Designschwaeche in deinem Konzept hin ....
    wenn du mehr infos ueber das ausloesen eines events brauchst, sollten die infos auch teil der schnittstelle sein ...

    eintweder du machst fuer jedes Object nen eigenen Haendler(slot) im Empfaenger, oder du bohrst dein Signal / Slot auf um Parameter, die dir die Infos liefern ...

    Ciao ...

  3. #3
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    Gibt es unter QT4 eine Möglichkeit den SIGNAL Sender zu ermitteln?
    Ja, QObject::sender mal anschauen.

  4. #4
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    @RHBaum
    Stimmt schon mit der Designschwäche, ich hatte auch in die falsche Richtung gedacht, ich wollte bei mehrere LineEdits die Eingabe Parsen aber dazu bietet - wie ich jetzt festgestellt habe - Qt ja schon die QRegExpValidator an.
    Jedoch habe ich jetzt ein weiteres Problem:
    Seltsamerweise nimmt er meinen Regexp beim email (LineEdit) nicht an.
    Bei den ersten drei LineEdit's stimmt es, habe ich hier ein Speicherproblem?
    PHP-Code:
    qotrdecoder::qotrdecoder()
    {
        
    ui.setupUi(this);

        
    QRegExp ireg"[\\w\\d\\/\\.-]+"Qt::CaseInsensitive );
        
    QRegExpValidator VPathiregthis );
        
    ui.inp_bin->setValidator( &VPath );
        
    ui.inp_key_file->setValidator( &VPath );
        
    ui.inp_output->setValidator( &VPath );

        
    QRegExp mreg"([\\w\\d\\/\\.-]+)@([\\w\\d\\/\\.-]+)\\.([a-z]{2,})"Qt::CaseSensitiveQRegExp::FixedString );
        
    QRegExpValidator VMailmregthis );
        
    ui.inp_email->setValidator( &VMail );

        
    // Signals
        
    connectui.btn_cancelSIGNALclicked() ), thisSLOTSlotTester() ) );
        
    connectui.btn_decodeSIGNALclicked() ), thisSLOTSlotTester() ) );
        
    connectui.btn_open_binSIGNALclicked() ), thisSLOTSlotTester() ) );
        
    connectui.btn_open_keySIGNALclicked() ), thisSLOTSlotTester() ) );
        
    connectui.btn_open_dirSIGNALclicked() ), thisSLOTSlotTester() ) );

        
    connectui.inp_binSIGNALtextEdited( const QString & ) ),
            
    thisSLOTSlotStringTester( const QString & ) ) );
        
    connectui.inp_key_fileSIGNALtextEdited( const QString & ) ),
            
    thisSLOTSlotStringTester( const QString & ) ) );
        
    connectui.inp_outputSIGNALtextEdited( const QString & ) ),
            
    thisSLOTSlotStringTester( const QString & ) ) );

        
    // connect( ui.inp_pass, SIGNAL(), this, SLOT() );
        // connect( ui.inp_email, SIGNAL(), this, SLOT() );


    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •