无法在连接qt中使用插槽

时间:2017-10-07 17:12:16

标签: c++ qt signals-slots

当我运行项目时,我无法使用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;
}

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

1 个答案:

答案 0 :(得分:1)

错误很明显:

  

没有这样的插槽QTextEdit :: onClick()

documentation也很清楚。 <{1}}在任何地方都没有QTextEdit个插槽。

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

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

MainWindow

也就是说,您可能希望将类connect(train_button, &QPushButton::clicked, this, &MainWindow::onClick); 的插槽附加到按钮,而不是MainWindow的插槽。