在QT中设置另一个类的连接

时间:2016-08-11 23:47:37

标签: c++ qt

我不明白。

loginview.h

#ifndef LOGINVIEW_H
#define LOGINVIEW_H

#include <QMainWindow>
#include <QDebug>
#include <QPushButton>

class LoginView : public QWidget
{

public:
    QWidget *LoginViewSetup(QWidget * wdgMain);

public slots:
    virtual void LogInUser();
    virtual void CreateUser();

public:
    QPushButton *logInBtn;
    QPushButton *createBtn;

};

#endif // LOGINVIEW_H

loginview.cpp

#include "loginview.h"

QWidget *LoginView::LoginViewSetup(QWidget * wdgMain)
{    
    //some code
    return wdgCenter;
}

void LoginView::LogInUser()
{
    //some code
}

void LoginView::CreateUser()
{
    //some code
}

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QDebug>

#include <loginview.h>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    QWidget * wdgMain;
};

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    wdgMain = new QWidget(this);

    LoginView LoginViewObj;
    QWidget *wdgCenter = LoginViewObj.LoginViewSetup(wdgMain);

    setCentralWidget( wdgMain );

    connect(LoginViewObj.createBtn, SIGNAL (released()), &LoginViewObj, SLOT (CreateUser()));
}

MainWindow::~MainWindow()
{
    delete ui;
}

问题:

  

QObject :: connect:没有这样的插槽QWidget :: CreateUser()   ../ PROJ / mainwindow.cpp:16

我尝试将Q_OBJECT添加到loginview.h,然后使用QMAKE重建项目。之后没有关于插槽的警告,但按钮仍未激活。程序不会在调试模式下跳转到按钮的处理。

请帮助我理解错误是什么?我有另一个类LoginView的对象,我将此对象作为插槽的接收器传递。为什么它通过我的课程和QWidget中的搜索插槽?

0 个答案:

没有答案