ارتباط با فانکشن های غیر عضو
-
سلام به همگی .
نمیدونم اینو قبلا پرسیدن یا نه ولی من می خوام از یک فانکشن که عضو کلاس اصلیم نیست یکی از سیگنال هاش رو صدا بزنم .class qt_vlc5 : public QMainWindow
{
...
signals :
void updateUi();slots :
void setUi();
}حالا اگه توی فایل سی پلاس پلاس یه تابع داشته باشیم که عضوی از کلاس اصلیمون نیست :
void test ()
{
emit updateUi(); امکان پذیر نیست
} -
سیگنالها عضوی از یک کلاسهستند. در یک متد گلوبال نمیتوان به آنها دسترسی داشت. امیت کردن یک سیگنال دقیقاً برابر با فراخوانی آنهاست. به همین دلیل شما نمیتوانید از خارج از کلاس آنها را فراخوانی کنید. کد خود را طوری تغییر دهید که شیکلاس فرم در دسترس باشد. برای مثال از الگوی تک نسخهای استفاده کنید. یا از الگوی آبسرور استفاده کنید و سیگنالها را به یک کلاس تک نسخهای انتقال دهید.