Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

[solved]class doesn't name a type



  • Hi, I have to class, USB and MainForm.
    in USB class i want to have an object of Mainform class but it has following error:
    @
    C:\Users(Mahdi)\Documents\QT\untitled1\usb.h:28: error: 'MainForm' does not name a type
    @
    this is USB.h
    @
    #include "mainform.h"
    using namespace std;
    class USB:public QThread
    {

    private:

    int Digital_Packet_Count;
    int Analog_Packet_Count;
    int TAkhasosi_Packet_Count;
    ContentControl *Temp_Content;
    MainForm *m;
    .
    .
    .
    @
    this is MainForm class:
    @
    namespace Ui {
    class MainForm;
    }

    class MainForm : public QWidget
    {
    Q_OBJECT

    public:

    QList<QWidget*> All_Images;
    QList<QMovie*> All_Gif;
    explicit MainForm(QWidget *parent = 0);
    ~MainForm();
    

    @
    what is problem?(ContentControl is another class that i have an object from it in USB class but it has no problem)



  • Try
    @
    Ui::MainForm *m;
    @



  • i did it but has following error:
    @
    C:\Users(Mahdi)\Documents\QT\untitled1\usb.h:22: error: 'MainForm' in namespace 'Ui' does not name a type
    @



  • Hi, note that, QWidget and subclass of it can only be used main thread.



  • Hi, can you explain more?


  • Lifetime Qt Champion

    Hi,

    Short version: QWidget and QWidget based classes can only be used from the GUI thread. The one that is started when you call app.exec();

    You can't create and use widgets from other threads



  • thanks. so i can't use from MainForm Object in USB class any way?


  • Lifetime Qt Champion

    No,

    You should have your class USB do all the handling it needs to do (I suppose it's low level stuff), give it an interface where you can connect a GUI on it and keep the two things separated.

    It will make your design cleaner keeping either responsibilities separated



  • thanks for all replies.
    i found the problem. i MainForm class i include usb.h and in usb.h i include MainForm.h. when i delete usb.h from MainForm problem has solved.


Log in to reply