首页 > 其他分享 >Qt项目中,在main.cpp中定义了一个自定义组件,但是在编译的时候报错`undefined reference to `vtable for MyWidget`

Qt项目中,在main.cpp中定义了一个自定义组件,但是在编译的时候报错`undefined reference to `vtable for MyWidget`

时间:2024-09-30 15:23:58浏览次数:8  
标签:const undefined 自定义 MyWidget1 报错 main Qt

1、问题描述

我在测试Qt项目的main.cpp中编写了如下代码:

class MyWidget1: public QWidget {
    Q_OBJECT
};

// main 程序入口 argc命令行变量的数量 argv  命令行变量的数组
int main(int argc, char *argv[])
{
    // 应用程序对象,在Qt中应用程序对象有且仅有一个
    QApplication a(argc, argv);
    QTranslator translator;
    const QStringList uiLanguages = QLocale::system().uiLanguages();
    for (const QString &locale : uiLanguages) {
        const QString baseName = "TestDesktopProject_" + QLocale(locale).name();
        if (translator.load(":/i18n/" + baseName)) {
            a.installTranslator(&translator);
            break;
        }
    }

    qDebug();

    // 窗口对象 MyWidget父类 继承自 QWidget
    MyWidget1 w;
    // 窗口对象 默认不会显示,必须要调用show方法显示窗口
    w.show();

    // 让应用程序进入消息循环,让代码“阻塞”到这行
    return a.exec();
}

编译时报了如下错误:

初步判断可能跟Qt的元对象编译器有关。

2、原因

暂时还不清楚,等后面找到原因再回来进行补充。

3、解决方案

经过一些尝试,有2种方法可以避免报错:

1、删除 MyWidget1 类中的 Q_OBJECT 宏定义,但是也仅仅避免了报错而已;

2、给每个自定义的组件单独编写到对应的头文件和源文件中。

标签:const,undefined,自定义,MyWidget1,报错,main,Qt
From: https://www.cnblogs.com/aoe1231/p/18441919

相关文章

  • PbootCMS默认面包屑导航样式修改及自定义的设置方法
    在使用PbootCMS建站时,如果需要对系统默认的面包屑(breadcrumb)标签样式进行修改,可以通过自定义参数来实现。下面详细介绍如何使用 {pboot:position} 标签,并自定义相关的参数。自定义面包屑标签基本语法{pboot:position}[position:breadcrumb]{/pboot:position}......
  • 用自定义函数镶嵌求解某年某月的天数
    首先分析年份年份分为1.平年2.闰年对于闰年的定义为可以被4整除并且不被100整除,或者可以被400整除部分代码如下​if((y%4==0&&y%100!=0)||y%400==0)//if判断年份是否是闰年​ 月份的判断一年有12个月,1~12个月中天数不同,其中可以用数组来表示自定......
  • ASP.NET WebApi OWIN 实现 OAuth 2.0(自定义获取 Token)
    ASP.NETWebApiOWIN实现OAuth2.0(自定义获取Token) 相关文章:ASP.NETWebApiOWIN实现OAuth2.0之前的项目实现,Token放在请求头的Headers里面,类似于这样:Accept:application/jsonContent-Type:application/jsonAuthorization:BearerpADKsjwMv927u...虽然这是......
  • pbootcms模板报错提示PHP Warning: Unknown: open_basedir restriction
    遇到PbootCMS模板中出现类似 PHPWarning:Unknown:open_basedirrestrictionineffect.File 的错误提示,通常是由于PHP的 open_basedir 配置限制导致的。这种情况下,可以通过调整PHP版本或修改 open_basedir 配置来解决问题。解决方案1.更换PHP版本根据你的描......
  • vue2 自定义empty指令
    主要思路定义一个echarts图标,数据为空,image采用base64编码图标宽高根据父宽高自适应渲染echarts函数,切换清除图例定义暂无数据指令定义option/***暂无数据*@param{number}width*@param{number}height*@returnsoption*/functionemptyChartOptionFn(w......
  • java-快速将普通main类变为javafx类,并加载自定义fxml
    java-快速将普通main类变为javafx类,并加载自定义fxml前提步骤1.普通类继承Application2.实现main方法3.写一个controller4.写一个fxml文件5.写start方法加载fxml6.具体代码7.运行即可前提使用自带javafx的jdk,这里使用的是jdk1.834,当然你可以使用其他的可行......
  • 开源模型应用落地-LangChain实用小技巧-文档分割器-自定义文档分割器(十三)
    一、前言  在LangChain框架中,文档分割器是一种将大段文本拆分成较小块或片段的算法或方法。其目标是创建可单独处理的可管理的片段,这在处理大型文档或数据集时通常是必要的。  而自定义文档分割器可以根据特定的需求和数据类型进行定制和配置,以便更好地适应应用程......
  • 【Ambari自定义组件集成】Ambari汉化,源码级修改手把手教程
    传统方式注意:此方法适合ambari-2.8.0注意:此方法适合ambari-2.8.0注意:此方法适合ambari-2.8.0Step1、找到代码位置:ambari-project\ambari-web\app\messages.js逐一替换Step2、下载我提供的汉化好的:message.jshttps://gitee.com/tt-bigdata/ambari-en-cn/blob/ma......
  • 《仙剑客栈2》报错提示eutil.dll缺失?解决《仙剑客栈2》eutil.dll文件的重要性与补充方
    《仙剑客栈2》报错提示eutil.dll缺失是一个常见的问题,这通常意味着游戏在运行时无法找到必要的动态链接库文件(DLL)。eutil.dll文件在Windows操作系统中扮演着至关重要的角色,为应用程序提供必要的函数和数据支持。以下是解决《仙剑客栈2》eutil.dll文件缺失问题的重要性与补充方......
  • Jmeter启动报错:Error: Unable to access jarfile D:\jiekou\apache-jmeter-5.6.3\b
    解决Jmeter启动报错:Error:UnabletoaccessjarfileD:\jiekou\apache-jmeter-5.6.3\bin\ApacheJMeter.jar问题:明明在官网(https://jmeter.apache.org/download_jmeter.cgi)直接下载,运行Jmeter,结果显示缺少ApacheJMeter.jar原因:Source(源)下含有src的文件里是不含有ApacheJMete......