2015-02-11 16 views
5

Biorąc pod uwagę następujące dwa:Qt gniazda typu sygnały, odlewane w nowej notacji

connect(ui->comboBox, SIGNAL(activated(QString)), ps, SLOT(requestPlotsAvailable(QString))); 
connect(ui->comboBox, &QComboBox::activated, ps, &PlotSystem::requestPlotsAvailable); 

Pierwsza wykorzystuje starą notację, która działa. Drugi używa nowej notacji i podaje błąd, aby uniknąć błędu przy użyciu nowej notacji.

+0

@hyde, przepraszam, to była literówka. –

Odpowiedz

8

To powinno działać

connect(ui->comboBox, 
     static_cast<void (QComboBox::*)(const QString &)>(&QComboBox::activated), 
     ps, 
     &PlotSystem::requestPlotsAvailable); 

Zobacz this pytanie o wskaźniki do przeciążonych funkcji

+0

Zwraca inny błąd: nie pasuje do funkcji konwertującej "aktywowany" do typu 'void (class QComboBox :: *) (class QString)' –

+1

tak, ponieważ powinien to być 'const QString &' zamiast 'QString'. (edytowana odpowiedź) – ftynse

+0

Problem polega na tym, jak opisano w pierwszej wiadomości, że kompilator nie może rozstrzygnąć, która z przeładowanych funkcji ma zostać wykonana. Tak więc 'static_cast' musi jawnie powiedzieć. – ftynse

Powiązane problemy