Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse 信号/插槽连接在没有警告或错误的情况下不工作_Eclipse_Qt_Signals Slots - Fatal编程技术网

Eclipse 信号/插槽连接在没有警告或错误的情况下不工作

Eclipse 信号/插槽连接在没有警告或错误的情况下不工作,eclipse,qt,signals-slots,Eclipse,Qt,Signals Slots,我将Eclipse与Qt结合使用,甚至认为我编写了一个简单的示例,但它不起作用。此时会出现一个带有按钮和QLineEdit的小窗口,但如果我按下按钮,它不会在QLineEdit中写入任何内容。我是一个初学者,所以我不知道我是否写错了什么,或者它就是不起作用。 我在Qt Designer中尝试了相同的示例,得到了相同的结果 main.cpp testUI.h #包括 #包括 #包括 #包括 #包括 #包括 #包括 #ifndef TESTUI_H_ #定义TESTUI\u H_ 类TestUi{

我将Eclipse与Qt结合使用,甚至认为我编写了一个简单的示例,但它不起作用。此时会出现一个带有按钮和QLineEdit的小窗口,但如果我按下按钮,它不会在QLineEdit中写入任何内容。我是一个初学者,所以我不知道我是否写错了什么,或者它就是不起作用。 我在Qt Designer中尝试了相同的示例,得到了相同的结果

main.cpp testUI.h
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#ifndef TESTUI_H_
#定义TESTUI\u H_
类TestUi{
公众:
QPushButton*btn;
QLineEdit*ed;
公众:
无效设置UI(QWidget*w){
QHBoxLayout*lay=新的QHBoxLayout;
w->setLayout(布局);
btn=新的QPUSH按钮;
ed=新QLineEdit;
lay->addWidget(btn);
lay->addWidget(ed);
} 
};   
#endif/*TESTUI_H_*/

您的
scrie()
方法是一个插槽,因此您必须将
void scrie()放入其中privates slot:
部分的.h文件中的code>声明,而不仅仅是
private:

您的
scrie()
方法意味着是一个slot,因此您必须将
void scrie()放入其中privates slots:
部分的.h文件中的code>声明,而不仅仅是
private:

我在您的代码中发现了许多问题

信号和插槽的连接。 连接不起作用,因为
proj::scrie
实际上不是插槽。为了制作插槽,您必须在类声明中声明
slots
部分

private slots:
    void scrie();
连接不是编译时特性,因此即使有错误,项目也可以正常编译。但在运行时,它会进行一些检查,并应在控制台中提供警告,如proj.cpp:12中的
Object::connect:No-this-slot proj::scrie()。请检查控制台输出

显式构造函数 您的类具有以下构造函数声明:

proj(QWidget *parent = 0);
很好的做法是声明构造函数,其中只有一个参数可以作为
显式
传递。它可以防止隐式转换

包括 请不要以这种方式包括Qt的头文件:

#include <qboxlayout.h>
#include <qpushbutton.h>
#include <qlineedit.h>
#include <qobject.h>
#include <qwidget.h>
#包括
#包括
#包括
#包括
#包括
无法保证这些标题在以下版本的Qt中可用。您应该像这样包含它:

#include <QBoxLayout>
#include <QPushButton>
#include <QObject>
#包括
#包括
#包括
等等

包括警卫 在“include-guard”之前放置了一些“include”指令。这不是一个错误,但最好将整个头部放在护板之间

封装
不要公开声明数据成员。如果您想使用“private”类,请参阅本文。

我在您的代码中发现了许多问题

信号和插槽的连接。 连接不起作用,因为
proj::scrie
实际上不是插槽。为了制作插槽,您必须在类声明中声明
slots
部分

private slots:
    void scrie();
连接不是编译时特性,因此即使有错误,项目也可以正常编译。但在运行时,它会进行一些检查,并应在控制台中提供警告,如proj.cpp:12中的
Object::connect:No-this-slot proj::scrie()。请检查控制台输出

显式构造函数 您的类具有以下构造函数声明:

proj(QWidget *parent = 0);
很好的做法是声明构造函数,其中只有一个参数可以作为
显式
传递。它可以防止隐式转换

包括 请不要以这种方式包括Qt的头文件:

#include <qboxlayout.h>
#include <qpushbutton.h>
#include <qlineedit.h>
#include <qobject.h>
#include <qwidget.h>
#包括
#包括
#包括
#包括
#包括
无法保证这些标题在以下版本的Qt中可用。您应该像这样包含它:

#include <QBoxLayout>
#include <QPushButton>
#include <QObject>
#包括
#包括
#包括
等等

包括警卫 在“include-guard”之前放置了一些“include”指令。这不是一个错误,但最好将整个头部放在护板之间

封装
不要公开声明数据成员。如果您想使用“private”类,请查看文章。

QObject::connect
不起作用,因为
scrie
函数实际上不是插槽。您应该检查控制台输出。将在此处报告连接失败等运行时错误。
QObject::connect
不起作用,因为
scrie
函数实际上不是插槽。您应该检查控制台输出。运行时错误(如连接失败)将在此处报告。