信号和插槽qt闭合插槽
我做了一个窗户和一个按钮。我希望按钮在单击时关闭窗口,但我希望通过我创建的一个公共槽来执行此操作,该槽包含信号和插槽qt闭合插槽,qt,qt-signals,slot,Qt,Qt Signals,Slot,我做了一个窗户和一个按钮。我希望按钮在单击时关闭窗口,但我希望通过我创建的一个公共槽来执行此操作,该槽包含QWidget的关闭槽,而不是使用默认的QWidget::close()。这是我的密码 窗户 #ifndef FENETRE_H #define FENETRE_H #include <QObject> #include <QWidget> #include <QPushButton> class fenetre: public QWidget { Q
QWidget
的关闭槽,而不是使用默认的QWidget::close()
。这是我的密码
窗户
#ifndef FENETRE_H
#define FENETRE_H
#include <QObject>
#include <QWidget>
#include <QPushButton>
class fenetre: public QWidget
{
Q_OBJECT
public:
fenetre();
public slots:
void another();
private:
QPushButton *button1;
};
#endif // FENETRE_H
main.cpp
#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include "fenetre.h"
int main(int argc , char *argv[])
{
QApplication app(argc,argv);
fenetre fen;
fen.show();
return app.exec();
}
#包括
#包括
#包括
#包括“fenetre.h”
int main(int argc,char*argv[])
{
QApplication应用程序(argc、argv);
芬奈特芬;
fen.show();
返回app.exec();
}
问题在于插槽中的代码:fenetre().close()代码>。这里fenetre()
创建一个新对象,在该对象上调用close()
。因此,只需在插槽中调用close()
,所有操作都将按预期工作
也考虑使用QT5样式与函数指针连接,因为它们一般更安全,不需要用头文件中的“槽”来标记函数:
connect(button1, &QPushButton::clicked, this, &fenetre::another);
在另一个的实现中,您有fenetre().close()
。这将创建一个临时的fenetre
,对其调用close
,然后超出范围。将该行更改为simplyclose()
。谢谢,它现在可以工作了!!这就是用小写名称命名类所得到的结果。。。当你看到Fenetre()
时,它至少应该会引起你的注意:)
connect(button1, &QPushButton::clicked, this, &fenetre::another);