我在Qt上阅读了几篇关于按钮事件的文章,但似乎都没有解决我的问题。我有一个用Qt Designer构建的简单GUI,它只包含一个按钮。我得到的运行时错误如下:
Object :: connect:CameraWindow.h中没有这样的插槽QApplication :: FullSizeR():25 Object :: connect :(发件人姓名:'FullSize') Object :: connect :(接收者名称:'CameraViewer')
FullSizeR()是我按下“我的”按钮时要调用的函数。
这是'如何定义主要内容:
int main(int argc, char *argv[]) {
// initialize resources, if needed
// Q_INIT_RESOURCE(resfile);
QApplication app(argc, argv);
CameraWindow cw;
cw.show();
//app.setActiveWindow(&cw);
//cw.getData(); // this paints the window
return app.exec();
}
这就是CameraWindow的定义方式:
class CameraWindow : public QDialog{
Q_OBJECT
public:
bool serverConnected;
void getData();
CameraWindow()
{
widget.setupUi(this); //this calls Qt Designer code
//the function bellow produces a run-time error
//access the button via widget.FullSize
connect(widget.FullSize,SIGNAL(clicked()), qApp, SLOT(FullSizeR()));
}
QLabel *imgl;
virtual ~CameraWindow();
protected slots:
void FullSizeR();
private:
Ui::CameraWindow widget;
};
我在'slots'下正确包含了QObject和我的函数定义 这是FullSizeR的定义:
void CameraWindow::FullSizeR()
{
QMessageBox::information(this,"Button clicked!\n", "Warning");
}
以上似乎并不难解决。如果我只知道Qt好一点,我知道它很简单: - /
全部谢谢
答案 0 :(得分:3)
connect(widget.FullSize,SIGNAL(clicked()), qApp, SLOT(FullSizeR()));
错误消息说明了一切:qApp
没有插槽。您需要this
:
connect(widget.FullSize, SIGNAL(clicked()), this, SLOT(FullSizeR()));