不能在连接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
.
的插槽
当我 运行 我的项目时,我无法使用 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
.