2010-12-01 16 views
7

, başka bir sınıfın üst sınıf böylece beyan bir QWidget sınıf var:QT yuvaları ve kalıtım: programım neden alt sınıf yerine ana bilgisayara bağlanmaya çalışıyor? Bir QT programında

class Renderer : public QGLWidget 
{ 
    Q_OBJECT 
    .... 
} 

class A : public Renderer 
{ .... } 

Şimdi Oluşturucu'daki bulunmadığı sınıf A için bir yuva var, ancak çalıştırmayı denediğinizde Program, bu sınıf A bağlantıları yapmak için başarısız:

Object::connect: <sender name: 'push_button'> 
Object::connect: <receiver name: 'A'> 
Object::connect: No such slot Renderer::loadDialog() in <file path> 

Neden oluşturucunuz bağlanmaya çalışıyor değil A? Aynı isimde Renderer'da bir slotum olması gerekiyor mu? Burada

A yuvasının ilanıdır: Burada
public slots: 
    void loadDialog(); 

ve bağlantıları için olduğu gibi

, çoğunlukla QT Creator güvendiğim, ancak buydu düzenlemek

Teşekkür

ui_windows.h dosyasında:

QObject::connect(pushButton, SIGNAL(clicked()), A, SLOT(loadDialog())); 

Bazı şeyleri temizlemeyi umuyorum :)

cevap

12

Sinyal ve yuvayı bağladığınız kodu gösterebilir misiniz? Belki de sınıf A'da yuvası beyanı görmek yararlı olacaktır

DÜZENLEME: Başka bir şey göre yuva sanal olmadığını olmak (ama olabilir alt sınıf A'da Q_OBJECT makro eklemek için

deneyin ne bir fark yaratmaması gereken okuyun).

Bunlar sadece tahmin edeceğiniz, gönderdiğiniz kodun bana uygun göründüğü tahmin ediliyor. Ben o bilgisayarda kullanılabilir Qt yok ben bu yüzden deneyebilirsiniz :(.

+0

Ekleme tarihi: – confusedKid

+2

Alt sınıfınıza yeni sinyaller/yuvalar bildirmek istediğinizde, Q_OBJECT makrosunu kullanmanız gerekir –