在QT中的两个窗口之间进行通信的最佳方法是什么?
What is the best way to communicate between two windows in Qt
在qt中两个窗口之间通信的最佳方法是什么?
我需要拥有一个单独的登录窗口和主应用程序窗口,该窗口接一个地出现(我的意思是主应用程序窗口,只有在登录成功的情况下才会显示)。我应该在主函数中创建这两个对象(登录窗口和主应用程序对象),还是在主应用程序类中创建登录窗口数据成员,并在主应用程序类的构造函数中创建它?
您可以创建登录窗口作为主应用程序类的数据成员,并在其构造函数中创建它。接下来,您可以通过连接一个名为登录的信号来调用登录主类的询问()到一个名为perress_login()的插槽,然后发出信号:
QObject::connect(this,SIGNAL(login_asked()),this,SLOT(perform_login())
,Qt::QueuedConnection);
emit login_asked();
您应该将主窗口隐藏在perfers_login()插槽中,并显示您的登录表单:
this->setVisible(false);
loginfm->show();
您可以通过以下信号和插槽通知您在登录中的失败或成功的主要应用:
QObject::connect(loginfm,SIGNAL(login_accepted()),this,SLOT(entered()));
QObject::connect(loginfm,SIGNAL(login_canceled()),this,SLOT(canceled()));
在主窗口的"输入()"中,您应该显示主窗口:
this->setVisible(true);
这样,您就可以通过发出login_asked()信号来调用在应用程序生命周期期间的登录。
登录窗口应为QDialog衍生窗口。这具有accepted
和rejected
信号,您可以在主窗口中琐碎地处理。(这回答标题中的问题)
在创建它们的位置并不重要,这确实是一个风格问题。我可能会自己把它放在main
中,但是如果我接管了现有的代码库,我不会费心更改此类详细信息。
相关文章:
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 在c代码之间共享数据的最佳方式
- 使用std::source_location报告错误的最佳实践
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 派生类销毁的最佳实践是什么
- 是否可以使用winusb同时与多个相同的usb设备进行通信
- 将寄存器设计成可由C和C++访问的外设的最佳实践
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 在Visual C ++中与Stockfish(外部可执行文件)通信的最佳方式
- 在QT中的两个窗口之间进行通信的最佳方法是什么?
- PHP 脚本与应用程序通信的最佳方法
- 构建与 Android 应用程序通信的C++程序的最佳方式
- 为客户端-服务器通信构建TCP/IP服务器的最佳方式
- UNIX中两个进程之间通信的最佳方式:一个运行ruby服务器,另一个运行C++客户端
- 使用套接字,发出通信结束信号的最佳做法是什么
- 创建一个c++应用程序与nginx通信的最佳方法
- 在多个线程之间频繁通信值的最佳体系结构是什么?
- 与dll相互通信的最佳方式是什么?