不能在连接qt中使用插槽

Can't use slots in connect qt

当我 运行 我的项目时,我无法使用 train_button 在文本中添加行。因为我得到了这个错误:

QObject::connect: No such slot QTextEdit::onClick()

我试图解决它,但只搜索了有关添加 Q_OBJECT 的信息,但我得到了这个。我的项目是标准 Qt Widget 应用程序。

.h:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QPushButton>
#include <QTextEdit>
#include <QString>
namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = 0);

~MainWindow();

public slots:
void onClick(){
    text->append("first\nsecond");
}

private:
QPushButton *train_button;
QTextEdit *text;
Ui::MainWindow *ui;
//QString a = "sdfsdfsdfsdf";
};

# endif // MAINWINDOW_H

.cpp:

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow){

ui->setupUi(this);
this->setFixedSize(800,600);

text = new QTextEdit(this);
train_button = new QPushButton(this);
text->setGeometry(50,50,500,500);
text->setPlaceholderText("Here we go ...");

train_button->setText("example");
train_button->setGeometry(600,50,100,50);

train_button->setStyleSheet( "background-color: rgb(0, 255, 0);border-style: inset;border-width: 0px;border-radius: 5px;border-color: beige;font: bold 14px;min-width: 10em; padding: 2px;" );

connect(train_button,SIGNAL(clicked()),text,SLOT(onClick();));
}

MainWindow::~MainWindow()
{
delete train_button;
delete solver_button;
delete text;
delete ui;
}

我使用 QMake 版本 3.0 使用 Qt 版本 5.2.1。

错误很明显:

No such slot QTextEdit::onClick()

documentation也清楚了。 QTextEdit 在任何地方都没有 onClick 位置。

不清楚您要做什么。在任何情况下,您都没有正确执行此操作:您无法将不存在的插槽连接到信号。


通过查看您的代码,我发现您将 onClick 定义为 MainWindow 的成员函数。
因此,这可能就是您想要的:

connect(train_button, &QPushButton::clicked, this, &MainWindow::onClick); 

也就是说,您可能想要将 class MainWindow 的插槽附加到按钮,而不是 QTextEdit.

的插槽