Qt代码不编译时,我试图连接一个信号到插槽

Qt code does not compile when i try to connect one signal to a slot

本文关键字:一个 插槽 信号 连接 编译 代码 Qt      更新时间:2023-10-16

我是Qt的新手,我正在尝试实现一个非常简单的计算器程序。只是想放一个按钮,当它被点击时,我希望它在下一行打印"Hello, World!"当我只有一个按钮时,它工作得很好,但当我添加第二个按钮时,它不会编译。因为我在编写计算器,所以我需要这些按钮。

错误如下:

C:UsersuserDesktopCalcbuild-Calc-Desktop_Qt_5_3_0_MinGW_32bit-Debugdebugmoc_mainwindow.o:-1: In function `ZN10MainWindow18qt_static_metacallEP7QObjectN11QMetaObject4CallEiPPv':
C:UsersuserDesktopCalcbuild-Calc-Desktop_Qt_5_3_0_MinGW_32bit-Debugdebugmoc_mainwindow.cpp:75: error: undefined reference to `MainWindow::on_pushButton_clicked()'
C:UsersuserDesktopCalcbuild-Calc-Desktop_Qt_5_3_0_MinGW_32bit-Debugdebugmoc_mainwindow.cpp:76: error: undefined reference to `MainWindow::on_pushButton_2_clicked()'

这是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);
}

,下面是我如何建立联系的:

#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!");
}

有人知道如何解决这个问题吗?感谢您的宝贵时间。

//这是有问题的部分

空白主窗口:on_pushButton_11_clicked ()

您错过了以下两个方法的实现:

MainWindow::on_pushButton_clicked()
{
    ui->lineEdit->setText("Hello, World 2!");
}

MainWindow::on_pushButton_2_clicked()
{
    ui->lineEdit->setText("Hello, World 3!");
}

所以,看起来你最终有三个槽而不是两个。您将需要按照自己的意愿来实现其他功能。请注意,上面的文本只是您计划在其中执行的任何操作的占位符。