当我运行项目时,我无法使用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版。
答案 0 :(得分:1)
错误很明显:
没有这样的插槽QTextEdit :: onClick()
documentation也很清楚。 <{1}}在任何地方都没有QTextEdit
个插槽。
目前尚不清楚你要做什么。在任何情况下,您都没有正确地执行此操作:您无法将不存在的插槽连接到信号。
通过查看您的代码,我发现您将onClick
定义为onClick
的成员函数。
因此,这可能是你想要的:
MainWindow
也就是说,您可能希望将类connect(train_button, &QPushButton::clicked, this, &MainWindow::onClick);
的插槽附加到按钮,而不是MainWindow
的插槽。