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).لكن المشكلة هي أنه لم يتم الإعلان عن w ضمن TCPClient.cpp الخاص بي...

قامت QT بإنشاء الوظيفة الرئيسية () بالنسبة لي.لست متأكدا من كيفية حل هذه المشكلة.أريد أن أتمكن من الاتصال بـ w.changeOutput(s1) من داخل TCPClient.cpp الخاص بي.

هذا هو الخطأ الذي أتلقىه.تكبكلينت.cpp:182:خطأ:لا يمكن استدعاء وظيفة العضو "الفراغ الظاهري Form2::changeOutput(std::string)" بدون كائن

شكرًا.

هل كانت مفيدة؟

المحلول

إذا فهمت المشكلة بشكل صحيح، فأعتقد أن "طريقة Qt" المناسبة هي جعل عميل TCP يرسل إشارة عندما يتلقى رسالة، ثم في وظيفتك الرئيسية قم بتوصيل تلك الإشارة بفتحة ChangeOutputs.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top