623 سوال

629 پاسخ

855 نظر

243 کاربر

به سامانه پرسش و پاسخ کیوت خوش آمدید, این سامانه به شما امکان می دهد پرسشهای خود را طرح نموده و در کوتاهترین زمان ، پاسخ خود را دریافت نمایید.

-قبل از سوال پرسیدن حتما جست و جو کنید.

-در صورتی که سوالی به شما کمک کرد و یا جوابی ، حتما به آن امتیاز مثبت دهید.

-در صورتی که سوالی پرسیدید و جواب خود را گرفتید حتما جواب را به عنوان بهترین جواب انتخاب کنید.

-از ارسال چند سوال در یک تاپیک جدا خودداری کنید.

-نام مناسب برای سوالات انتخاب کنید.

-برچسب مناسب برای سوالات انتخاب کنید.

-برای نوشتن کد کافی است کد را از ادیتور خود کپی و در ادیتور سایت الصاق کنید و با انتخاب کد کلید CTRL+K را فشار دهید.

-حتما قوانین و نکات دیگر را از اینجا بخوانید.



Recent Badges

ته سوال !
- mva -
ته سوال !
- majid1605 -
سوال محشر
- majid1605 -

مشکل در ساختن شی از یک کلاس در کلاس دیگر

+1 دیدگاه
113 بازدید

سلام
من یه کلاس Thread ساختم و میخوام ازش داخل MainWindow استفاده کنم. ولی ارور میده.

#ifndef THREAD_H
#define THREAD_H

#include <QThread>
#include "Signal.h"
#include "ui_mainwindow.h"
#include "mainwindow.h"

class Thread : public QThread
{
public:
    Thread();

protected:
    void run ();


private:
    Ui::MainWindow *ui;
    Signal *sig;

};

#endif // THREAD_H

بعد داخل MainWindow میزنم :

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QThread>
#include "Signal.h"
#include "Thread.h"

namespace Ui {
class MainWindow;
}   

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();


private slots:
    void on_combo_textChanged(const QString &arg1);


private:
    Ui::MainWindow *ui;
    Thread *th;

};

#endif // MAINWINDOW_H

ولی چنین اروری میده بهم :

syntax error : missing ';' before '*'
سوال شده تیر 18, 1392 در Qt Core  بوسیله ی mehdi (480 امتیاز)  
83% درصد پذیرش جواب ها

ویرایش شده تیر 18, 1392 بوسیله ی mehdi

1 پاسخ

0 امتیاز

به جای

#include "Thread.h"

از Forward Declaration استفاده کن

class Thread;

در ضمن کل فایل .h ات رو اینجا بذار.

پاسخ داده شده تیر 18, 1392 بوسیله ی admin کیومن (23,310 امتیاز)  
فایل‌های .h در سوال درست شد. الان من forward declaration کردم ولی میگه همچین کلاسی نیست. با توجه به اینکه کلاس Thread توی یک فایل h. و cpp. دیگه تعریف شده، کار دیگه‌ای باید کرد ؟؟
 " 'MainWindow::th' uses undefined class 'Thread'"
چرا توی کلاس ترد اشاره گر به Main window داری؟ توی MainWindow.cpp ات هم Thread.h رو include کن.
اشاره گر برا اینه که توی ()run میخوام با ui کار کنم. مثلا با comboBox ـش .
نه دیگه خودت گفتی این کار بدیه ! :) سیگنال و اسلات استفاده کن.
آهااان. خب آره :)
آقا من تاحالا connect به این با کلاسی نزدم. یعنی connect ـش توی کلاس Thread، همچین طوری میشه ؟
connect(this, SIGNAL(started()), MainWindow, SLOT(threadRun()));
...