Sono nuovo a Qt. Sto cercando di implementare un programma di calcolatrice davvero semplice. Sto solo provando a mettere un bottone, e quando viene cliccato, voglio che stampi "Hello, World!" alla riga successiva Modifica. Funziona bene quando ho un solo pulsante, ma quando aggiungo il secondo, non viene compilato. E dato che sto codificando una calcolatrice, ho bisogno di quei pulsanti.Il codice Qt non viene compilato quando tento di connettere un segnale a uno slot
Qui ci sono gli errori:
C:\Users\user\Desktop\Calc\build-Calc-Desktop_Qt_5_3_0_MinGW_32bit-Debug\debug\moc_mainwindow.o:-1: In function `ZN10MainWindow18qt_static_metacallEP7QObjectN11QMetaObject4CallEiPPv':
C:\Users\user\Desktop\Calc\build-Calc-Desktop_Qt_5_3_0_MinGW_32bit-Debug\debug\moc_mainwindow.cpp:75: error: undefined reference to `MainWindow::on_pushButton_clicked()'
C:\Users\user\Desktop\Calc\build-Calc-Desktop_Qt_5_3_0_MinGW_32bit-Debug\debug\moc_mainwindow.cpp:76: error: undefined reference to `MainWindow::on_pushButton_2_clicked()'
Ecco il metodo MainWindow
:
void MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
if (_c == QMetaObject::InvokeMetaMethod) {
MainWindow *_t = static_cast<MainWindow *>(_o);
switch (_id) {
case 0: _t->on_pushButton_clicked(); break;
case 1: _t->on_pushButton_2_clicked(); break;
case 2: _t->on_pushButton_11_clicked(); break;
default: ;
}
}
Q_UNUSED(_a);
}
Ed ecco come faccio il collegamento:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
// this is the problematic part
void MainWindow::on_pushButton_11_clicked()
{
ui->lineEdit->setText("Hello, World!");
}
Qualcuno sa come risolvere questo problema ? Grazie per il tuo tempo.
ah, grazie! Ho pensato che cancellando una vecchia connessione Qt Creator cancellasse anche dal codice. Apparentemente no. –
@ AtakanArıkan: sì, se non ne hai bisogno, basta cancellare la loro dichiarazione nell'intestazione e rigenerare il file moc. – lpapp