QTでフォームオブジェクトを作成し、そのフォームにアクセスする方法は?

StackOverflow https://stackoverflow.com/questions/1809810

  •  05-07-2019
  •  | 
  •  

質問

特定のテキストボックスメッセージを変更しようとしています。出力が表示されます。

これは、TCPClient()にあるものです

#include "form2.h"....string recvMSG = "random";    
QString s1 = QString::fromLocal8Bit(recvMSG.c_str());

182 :: Form2 :: changeOutput(s1);

within my form2.h I have:

...
void Form2::changeOutput(QString &s)
{
    output_box.setText(s1);
}
...

メイン:

#include <qapplication.h>
#include "form2.h"
#include <string.h>     /* for memset() */
#include <iostream>
#include <stdlib.h>     /* for atoi() and exit() */

int main( int argc, char ** argv )
{
    QApplication a( argc, argv );
    Form2 w;
    w.show();
    a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );
    return a.exec();
}

これで、w.changeOutput(s1)を呼び出す必要があることがわかりました。 しかし問題は、TCPClient.cpp内でwが宣言されていないことです...

QTがmain()関数を作成してくれました。この問題を解決する方法がわかりません。 TCPClient.cpp内からw.changeOutput(s1)を呼び出せるようにしたい。

これはエラーです。 TCPClient.cpp:182:エラー:メンバー関数を呼び出すことはできません&#8216; virtual void Form2 :: changeOutput(std :: string)&#8217;オブジェクトなし

ありがとう。

役に立ちましたか?

解決

問題を正しく理解できた場合、適切な「Qt-way」 TCPクライアントがメッセージを受信したときにシグナルを送信し、メイン関数でそのシグナルをchangeOutputsスロットに接続します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top