Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.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/1/hibernate/5.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
C++ QT在类中打开新窗口_C++_Qt_Window_Qt Signals_Qgridlayout - Fatal编程技术网

C++ QT在类中打开新窗口

C++ QT在类中打开新窗口,c++,qt,window,qt-signals,qgridlayout,C++,Qt,Window,Qt Signals,Qgridlayout,因此,我目前尝试制作一个益智游戏,当我点击Playbutton时,将打开一个新窗口,从按钮接收到打开插槽功能openNewWindow的信号,如下所示: QWidget *game = new QWidget(); QPushButton *playButton = new QPushButton("Play"); QObject::connect(playButton,SIGNAL(clicked()),game,SLOT(PuzzleField::openNewWindow())); 标

因此,我目前尝试制作一个益智游戏,当我点击
Playbutton
时,将打开一个新窗口,从按钮接收到打开插槽功能
openNewWindow
的信号,如下所示:

QWidget *game = new QWidget();
QPushButton *playButton = new QPushButton("Play");
 QObject::connect(playButton,SIGNAL(clicked()),game,SLOT(PuzzleField::openNewWindow()));
标题:

class PuzzleField : public QPushButton{
signals: ....
public:  ....
private: ....
public slots:
    void openNewWindow();
}
CPP:

但单击按钮后窗口不会打开。也许我只是个傻瓜,但我想不出解决办法

在没有信号/插槽的情况下调用函数时,一切正常,按一下按钮然后打开窗口不起作用


提前感谢您的帮助。

您没有收到任何警告,因为您不应该在
SIGNAL
定义中包含类名--请尝试
SIGNAL(openNewWindow())
。如果可能的话,使用。不,我没有收到警告。这两种方法都试过了,但都不起作用。如果可能的话,你是什么意思?您知道在QPushButton.clicked()上打开窗口的其他方法吗@G.M.如果您正在使用Qt5,请尝试
QObject::connect(playButton,&QPushButton::clicked,game,&Puzzfield::openNewWindow)
。您的
Puzzfield
类定义是否包含必需的
Q_对象
宏?请查看
拼图字段
的类定义。尝试了您的第一个建议,尽管我使用的是QT5.9.0,但仍然无效。一旦我包含Q_对象,它就会说:“main.obj not found”
QWidget *game = new QWidget();
QPushButton *playButton = new QPushButton("Play");
 QObject::connect(playButton,SIGNAL(clicked()),game,SLOT(PuzzleField::openNewWindow()));