2016-04-15 14 views
1

Ich habe eine QComboBox. Und ein implementiertes QAbstractItemView-Set als Combobox-Ansicht. Welches Signal muss ich aus meiner Sicht aussenden, damit die Combo weiß, dass der aktuelle Gegenstand geändert wurde? Wenn "selectionChanged" oder "currentItemChanged" ausgegeben wird, wird das ausgewählte Element nicht in der Combo angezeigt und die Ansicht wird weiterhin angezeigt.Welches Signal ruft die QComboBox ab?

QComboBox* c = new QComboBox(); 
    QAbstractItemView* v = new MyComboView(); 
    c->setView(v); 

Ich werde versuchen, das Problem klarer zu machen. Ich habe benutzerdefinierte Ansicht auf der Combobox, es wird angezeigt, die Maus bewegen, Maus über Ereignisse funktionieren ordnungsgemäß. Aber ich habe ein echtes Problem. Es ist das Modell Item wird nicht in der Combo angezeigt, wenn ich darauf klicke. Ich habe versucht, selectionChanged und currentChanged Signale auszugeben, es war nicht hilfreich. Muss ich meine eigenen Slots für diese Signale schreiben, damit es funktioniert oder QT?

+0

Haben Sie das Signal 'currentIndexChanged (int)' von der QComboBox versucht? – IAmInPLS

+0

Ihre Frage scheint ein [XY-Problem] zu beschreiben (http://xyproblem.info). Versuchen Sie zu beschreiben, was Sie erreichen möchten, was Sie versucht haben und wie es sich vom erwarteten Ergebnis unterscheidet. – Murphy

+0

Murphy, Entschuldigung für schlechte Erklärung. Ich werde versuchen, es klarer zu machen. – Ani

Antwort

2

Es gibt kein solches Signal.QComboBox erhält die Informationen über sie Ansicht durch die Ereignisfilter sind:

Jedes Mal, wenn eine Maus über die Ansicht bewegt wird, wird die aktuelle Index (die Ansicht) entsprechend das Maus-Cursor gesetzt.

Jedes Mal, wenn eine Maustaste losgelassen wird, wird der aktuelle Index der Ansicht als der QComboBox und die Liste (Ansicht) aktuelle Index gesetzt wird ausgeblendet.

+0

Danke, Tomas. Die Lösung hat mouseReleaseEvent in MyComboView neu implementiert. – Ani