c++ - 当我尝试将一个信号连接到插槽时,Qt 代码无法编译

标签 c++ qt qtcore qlineedit qt-signals

我是 Qt 新手。我正在尝试实现一个非常简单的计算器程序。只是想放一个按钮,当它被点击时,我想让它打印“Hello, World!”到下一行编辑。当我只有一个按钮时它工作正常,但是当我添加第二个按钮时,它无法编译。由于我正在编写计算器代码,因此我需要这些按钮。

错误如下:

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()'

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

有人知道怎么解决吗?感谢您的宝贵时间。

最佳答案

// this is the problematic part

void MainWindow::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!");
}

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

关于c++ - 当我尝试将一个信号连接到插槽时,Qt 代码无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23662007/

相关文章:

c++ - 如何在 C++ 中有效地返回树中的节点列表

c++ - 如何删除 QT 项目文件中的重复代码?

c++ - QtService 无法启动

c++ - 无法将 C++ 类型转换为 QML

c++ - 如何从 C++ 访问嵌套的 QML 对象?

c++ - 加速的 C++ 头文件不起作用

c++ - 创建字符串数组的有效方法

c++ - 为什么这个构建错误?

c++ - 我可以在没有 qmake 或 Qt Creator 的情况下使用 Qt 吗?

Qt, qt core inclusion 有必要吗?