锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / C语言开源技术 / QT对话框类找不到默认构造函数
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

QT对话框类找不到默认构造函数


引言

近期安排实习员工开发QT下的对话框界面,他以前是按一个项目一个UI一个对话框模式工作,后来让他把几个界面UI的类集成到一个项目里时,遇到题目问题:QT对话框类找不到默认构造函数。

默认构造函数是和类同名且不带参数的构造函数,遇到这样的错误,理论上好解决,但是放到多个类的QT项目环境下,有些容易误导的因素会导致此问题发生。

原因

在有2个对话框类时,在2个源文件里的代码使用类名有冲突造成。

解决方法

把类名规划好。对话框类和UI类的类名要规划好,继类的命名也要对应。

QT的对话框类需要一个UI类,这个UI类可以用UIC来转换UI文件获取,但是转换出来的类名可能会和预想的不一样,一般需要手工修改,比如:

1、非命名空间内类名

QT_BEGIN_NAMESPACE

class Ui_MainDialog
          

这里的Ui_MainDialog你要替换为有意义的其它名称。

2、命名空间内类名

namespace Ui {
    class MainDialog: public Ui_MainDialog {};
} // namespace Ui
          

这里的MainDialog和后面的基类你要替换为有意义的其它名称。注意public后面的名称要和第一步里自定义的名称对应,否则就会导致不对应,有编译错误。

3、对话框类里包含好头文件,ui成员的类型和头文件里规定的类一样

#include "ui_maindialog.h"//ui类对应的头文件
#include "fortunethread.h"


class MDialog : public QDialog
{
    Q_OBJECT

public:
    explicit MDialog(FortuneThread*pthread);
    ~MDialog();
private slots:
    void userexit();
private:
    Ui::MainDialog ui;//成员的类型
    FortuneThread*pmainthread;
};
友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院(文化路97号院)内