Qt按钮事件使用Qt Designer无法正常工作:“没有这样的插槽QApplication”

时间:2011-07-06 03:40:20

标签: c++ qt events button designer

我在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好一点,我知道它很简单: - /

全部谢谢

1 个答案:

答案 0 :(得分:3)

connect(widget.FullSize,SIGNAL(clicked()), qApp, SLOT(FullSizeR()));

错误消息说明了一切:qApp没有插槽。您需要this

connect(widget.FullSize, SIGNAL(clicked()), this, SLOT(FullSizeR()));