Qt从一个类发出信号到另一个类
Qt emit signal from a class to class
我尝试从我的loginmanager类发出一个自定义信号login()到主窗口。信号在loginButtonClicked插槽上触发,根据我对信号/插槽机制的理解,它应该能够捕获任何信号触发的事件,并"查找"要执行的相应插槽。但它并不像我想的那样起作用。
连接函数返回1,这意味着它能够在moc文件中实现,如果我运行m_LoginManager->setLogin(),它会触发login()信号。
但是我更喜欢的是信号由loginButton发出,并传递到主窗口进行处理(在本例中为init())。
如果我说错了,请纠正我。
代码如下:
loginmanager.cpp
LoginManager::LoginManager(QWidget * parent) : QWidget(parent)
{
ui.setupUi(this);
connect(ui.loginButton, SIGNAL(clicked()), this, SLOT(loginButtonClicked());
}
LoginManager::~LoginManager()
{
}
void LoginManager::setLogin()
{
emit login();
}
void LoginManager::loginButtonClicked()
{
setLogin();
}
loginmanager.hpp
#include <QWidget>
#include "ui_loginmanager.h"
class DatabaseManager;
class SettingManager;
class LoginManager : public QWidget
{
Q_OBJECT
public:
LoginManager(QWidget * parent = Q_NULLPTR);
~LoginManager();
void setLogin();
signals:
void login();
public slots:
void loginButtonClicked();
private:
Ui::LoginManager ui;
};
mainwindow.hpp
#include <QtWidgets/QMainWindow>
#include "ui_safeboxmanager.h"
class SafeboxManager : public QMainWindow
{
Q_OBJECT
public:
SafeboxManager(QWidget *parent = 0);
~SafeboxManager();
public slots:
void init();
private:
Ui::SafeboxManagerClass ui;
LoginManager* m_LoginManager;
};
#endif // SAFEBOXMANAGER_H
mainwindow.cpp
#include "safeboxmanager.hpp"
#include "loginmanager.hpp"
SafeboxManager::SafeboxManager(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
m_LoginManager = new LoginManager();
ui.mainToolBar->setEnabled(false);
ui.tableWidget->setEnabled(false);
connect(m_LoginManager, SIGNAL(login()), this, SLOT(init()));
//m_LoginManager->setLogin() << this work
}
SafeboxManager::~SafeboxManager()
{
}
void SafeboxManager::init()
{
ui.mainToolBar->setEnabled(true);
ui.tableWidget->setEnabled(true);
}
SafeboxManager和LoginManager对象必须存在足够长的时间。查看使用寿命
相关文章:
- 如何在qt中将信号和插槽与另一个对象连接 --解决了
- Qt将信号与另一个类方法连接
- 从另一个线程发出信号是否安全?
- 在另一个线程上发出 QObject 信号的正确方法?
- glib:在另一个线程上处理自定义 GMainContext* 循环,不引发信号处理程序
- 连接类实例和另一个类实例中的对话框之间的槽和信号
- 如何让一个线程继续,而另一个线程正在等待C++中的信号量
- 发出来自另一个类的信号
- 更改如何从另一个窗口从Mainwindow接收信号
- 如果不同的线程调用另一个不同线程的相同信号,则需要静音
- 如何从另一个类发出信号
- 如何通过在另一个线程中提出的升压信号更新QT GUI
- 有没有一种方法可以将升压信号直接连接到另一个信号
- qt链接器错误,从另一个线程发出信号
- 如何从另一个线程的 cpp 代码同步调用 qml 信号处理程序
- 如何使用信号和插槽从qt表单中获取id,然后在链表中搜索它并使用另一个表单显示结果
- 使用Qt信号和插槽更改另一个类的标签文本
- Qt:使用信号和插槽从另一个类调用MainWindow::Ui
- C++/Qt-从一个线程到另一个线程槽的信号
- 级联导航窗格:连接到另一个qml文件的对象信号