Eclipse 信号/插槽连接在没有警告或错误的情况下不工作
我将Eclipse与Qt结合使用,甚至认为我编写了一个简单的示例,但它不起作用。此时会出现一个带有按钮和QLineEdit的小窗口,但如果我按下按钮,它不会在QLineEdit中写入任何内容。我是一个初学者,所以我不知道我是否写错了什么,或者它就是不起作用。 我在Qt Designer中尝试了相同的示例,得到了相同的结果 main.cpp testUI.hEclipse 信号/插槽连接在没有警告或错误的情况下不工作,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{
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#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
函数实际上不是插槽。您应该检查控制台输出。运行时错误(如连接失败)将在此处报告。