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()));