Qtの2つのウィンドウ間で通信するための最良の方法は何ですか?
別のログインウィンドウとメインアプリケーションウィンドウが次々に表示される必要があります(2番目のウィンドウ、つまりメインアプリケーションウィンドウは、ログインが成功した場合にのみ表示されます)。これらの2つのオブジェクト(ログインウィンドウとメインアプリケーションオブジェクト)をメイン関数で作成する必要がありますか、それともログインウィンドウデータをメインアプリケーションクラスのメンバーにして、メインアプリケーションクラスのコンストラクターで作成する必要がありますか?
ログインウィンドウをメインアプリケーションクラスのデータメンバーとして作成し、そのコンストラクターで作成できます。次に、メインクラスのlogin_ask()という名前のシグナルをperform_login()という名前のスロットに接続し、その後シグナルを発行することで、loginを呼び出すことができます。
QObject::connect(this,SIGNAL(login_asked()),this,SLOT(perform_login())
,Qt::QueuedConnection);
emit login_asked();
メインウィンドウをperform_login()スロットで非表示にし、次のようなログインフォームを表示する必要があります。
this->setVisible(false);
loginfm->show();
次のようなシグナルとスロットを使用して、ログインの失敗または成功をメインアプリケーションに通知できます。
QObject::connect(loginfm,SIGNAL(login_accepted()),this,SLOT(entered()));
QObject::connect(loginfm,SIGNAL(login_canceled()),this,SLOT(canceled()));
メインウィンドウのentered()スロットに、メインウィンドウを表示する必要があります。
this->setVisible(true);
このように、login_asked()シグナルを発行するだけで、アプリケーションのライフサイクル中に必要な数だけログインを呼び出すことができます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加