Seite 1 von 1

[gelöst] seltsames Verhalten von Slots

Verfasst: 12. September 2006 15:33
von theRiddler
Hi

Ich erweitere/ändere ein bestehendes Programm das mittels QT Designer erstellt wurde, aber ich arbeite ohne QTDesigner (nur codn). Das war bis jetzt auch kein Problem, jetzt will ich neue Buttons etc. in die Oberfläche einbauen - mit den dazugehörigen Slots.

Das Problem ist, dass das connect noch funktioniert und das SIGNAL ausgelöst wird, aber der SLOT nicht. Ändere ich den SLOT auf einen, der nicht von mir hinzugefügt wurde - so funktionierts.
Ändere ich den Inhalt den bestehenden SLOTs, sodass dürch diesen mein SLOT ausgeführt wird - funktionierts auch.
Nur wenn ich meinen SLOT direkt im connect angebe, wird er ignoriert.

(Ich habe schon alle files neu compiliert und de moc neu erstellt ;) - .ui werden auch keine mehr verwendet)

Hat jemand eine Idee?

Code: Alles auswählen

fileMenu = new QPopupMenu( this );
fileNewAction->addTo( fileMenu );
fileOpenAction->addTo( fileMenu );
fileInsertAction->addTo( fileMenu );
fileImportEntAction->addTo( fileMenu);//meins
fileSaveAction->addTo( fileMenu );
fileSaveAsAction->addTo( fileMenu );

connect( fileNewAction, SIGNAL( activated() ), this, SLOT( fileNew() ) );
connect( fileOpenAction, SIGNAL( activated() ), this, SLOT( fileOpen() ) );
connect( fileImportEntAction, SIGNAL( activated() ), this, SLOT( changeMouse(2) ) );//meins
connect( fileSaveAction, SIGNAL( activated() ), this, SLOT( fileSave() ) );
QT3.3

Danke!

Verfasst: 12. September 2006 22:20
von rmeeh
Hi,
hast Du den Slot in der Header Datei als "virtual void....." deklariert?
und an das Macro Q_OBJECT gedacht?

Ein Slot ist virtuell, hast Du das vergessen, wird er nie aufgerufen.......
-Ralf-

Verfasst: 13. September 2006 14:52
von theRiddler
Hi.

Ja hab ich alles gemacht!

Hier der entsprechende Code im Header:

Code: Alles auswählen

...
class QTabWidget;
class QCheckBox;

class OSGMainView : public QMainWindow
{
    Q_OBJECT

public:
    OSGMainView( QWidget* parent = 0, const char* name = 0, WFlags fl = WType_TopLevel );
    ~OSGMainView();

    QTabWidget* tabView;
    QCheckBox* checkStat;
...

public slots:
    virtual void init();
    virtual void setStatistics( bool val );
...
    virtual void changeMouse( int buttonPos ); //mein SLOT
...

Re: seltsames Verhalten von Slots

Verfasst: 13. September 2006 15:32
von macman
theRiddler hat geschrieben:

Code: Alles auswählen

connect( fileImportEntAction, SIGNAL( activated() ), this, SLOT( changeMouse(2) ) );//meins
Der kann nicht funktionieren. Kommt da keine Fehlermeldung beim debuggen? Man kann keine festen Werte bei Slots übergeben, das ging noch nie.

Verfasst: 13. September 2006 16:09
von theRiddler
Das wars... Vielen Dank!