zoukankan      html  css  js  c++  java
  • Qt--- 一些常见问题处理(无法解析得外部符号,UI头文件找不到等)

    1.编译,出错,提示:

    mainwindowprivate.obj:-1: error: LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl MainWindowPrivate::metaObject(void)const " (?metaObject@MainWindowPrivate@@UEBAPEBUQMetaObject@@XZ)

    从QObject继承了一个类:

    #ifndef MAINWINDOWPRIVATE_H
    #define MAINWINDOWPRIVATE_H
    
    #include "DockManager.h"
    
    class MainWindowPrivate : public QObject
    {
    Q_OBJECT
    public:
    MainWindowPrivate();
    virtual ~MainWindowPrivate();
    
    public:
    void initDockWidget(QWidget *widget);
    
    private:
    ads::CDockManager *DockManager;
    };
    
    #endif // MAINWINDOWPRIVATE_H


    编译,出错,提示:

    mainwindowprivate.obj:-1: error: LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl MainWindowPrivate::metaObject(void)const " (?metaObject@MainWindowPrivate@@UEBAPEBUQMetaObject@@XZ)

    解决办法:

    编译出错是因为没有生成moc_mainwindowprivate.cpp文件造成的。

    如果新添加QObject派生类到您的项目,则必须再次运行qmake,即
    1、清理项目(非必须)
    2、运行qmake(必须)
    3、构建项目(必须)
    否则,如果在QObject继承的类上进行增量构建,那么您将拥有过时的moc文件,或者干脆没有moc文件。


    原文链接: https://blog.csdn.net/libaineu2004/article/details/108215844

    2.在UI设计界面不能通过添加槽函数来添加槽函数(。-  。)

     类似于上面这个报错。

    解决办法:

    .对应 cpp 中include的头文件可能为大写 #include "ui_Dlg_CSP.h",导致添加槽时,找不到对应头文件,要手动改为小写。

    Qt会根据 dlg_CSP.ui 自动生成一个ui_dlg_CSP.h,有时候改了UI后,没有自动重新生成,还是使用的旧的 .h。此时需要手动将旧的 .h删掉,然后构建。

    3.在UI设计界面不能通过添加槽函数来添加槽函数(。-  。)

    因为mainwindow.cpp和testui.cpp两个cpp中都包含了ui_mainwindow.h导致的。

    自动转到槽函数一定程度是看哪里包含了上面这个ui头文件的,有两处引入就不懂该在哪里添加头文件了,这时候去把想要加入槽函数以外地方的ui头文件注释掉,添加完槽函数再解开注释就行。

  • 相关阅读:
    odoo API装饰器one、model、multi的区别
    odoo配置界面设置字段默认值
    redhat_6.5下载地址
    常用在线工具链接
    odoo开发环境搭建(四):python开发工具IDE pycharm配置
    odoo开发环境搭建(三):安装odoo依赖的python包
    odoo开发环境搭建(二):安装Ubuntu 17虚拟机
    odoo开发环境搭建(一):安装VMware Workstation
    火狐浏览器网页截屏插件
    copy代码的时候,如何去掉代码前边的编号
  • 原文地址:https://www.cnblogs.com/linxisuo/p/14823339.html
Copyright © 2011-2022 走看看