error: LNK2001: 无法解析的外部符号 “public: virtual struct QMetaObject const * __cdecl

2023-10-27

Qt系列文章目录

前言

我在代码中加入了对应的信号和槽,但编译仍然报错:

#ifndef PROJECTWIN_H
#define PROJECTWIN_H



namespace Ui {
class ProjectWin;
}


ProjectWin类声明头文件
class ProjectWin : public QWidget
{
    Q_OBJECT
public:
    static ProjectWin* getInstance();
    ~ProjectWin();

    FileMonitorMgr *m_fileMgr;
    QString m_paraFolder;
private:
    QTreeWidget* m_picTree;
//    QTreeWidget* m_paraTree;
    QWidget* m_naviWgt;

private:
    void initWidget();
    void initPicTree();
    void readParaFile(QString filePath);
private:
   
    QTextEdit*  m_paraText;
   

    static ProjectWin* m_pInstance;
private:
    explicit ProjectWin(QWidget *parent = nullptr);
    static void destroyInstance();

public Q_SLOTS:
   
    void slotParaInfo(QString imageName);
};

#endif // PROJECTWIN_H

ProjectWin类实现
#include "ProjectWin.h"
#include "ui_ProjectWin.h"

#pragma execution_character_set("utf-8")


ProjectWin* ProjectWin::m_pInstance = nullptr;

ProjectWin* ProjectWin::getInstance()
{
    if(!m_pInstance)
    {
        m_pInstance = new ProjectWin();
        atexit(destroyInstance);
    }
    return m_pInstance;
}

void ProjectWin::destroyInstance()
{
    if(m_pInstance)
    {
        delete m_pInstance;
        m_pInstance = nullptr;
    }
}

ProjectWin::~ProjectWin()
{
    delete ui;
}

ProjectWin::ProjectWin(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::ProjectWin)
{
    ui->setupUi(this);

 

    //图像参数
    m_tabWidgetPara = new QTabWidget();
    m_paraText = new QTextEdit();
    m_tabWidgetPara->addTab(m_paraText, u8"图像参数数据");
    m_tabWidgetPara->setStyleSheet("border: 0");
    m_paraText->setStyleSheet("border: 0");

//    m_tabWidgetPara->setTabText(0, u8"图像参数数据");

   
    // 设置窗口的主布局
   
    this->setLayout(mainLayout);
}

void ProjectWin::onItemClicked(QTreeWidgetItem *item, int column)
{
    QString imageName = item->text(0);
    emit sigShowImageBorder(imageName);
}

void ProjectWin::initWidget()
{

    //    m_picTree->header()->hide();//设置隐藏头
}


void ProjectWin::slotParaInfo(QString imageName)
{
    QString fullPath = m_paraFolder + "/";
    QDir directory(m_paraFolder);
    QStringList filters;
    filters << "*.txt";

    directory.setNameFilters(filters);
    directory.setFilter(QDir::Files | QDir::NoDotAndDotDot);

    QFileInfoList fileInfoList = directory.entryInfoList();
    for (const QFileInfo &fileInfo : fileInfoList) {
        //        qDebug() << "Found:" << fileInfo.absoluteFilePath();
        QString fullPath = fileInfo.absoluteFilePath();
        if(imageName == fileInfo.fileName())
        {
            fullPath += imageName;
            readParaFile(m_paraFolder);
        }
    }
}

GraphicsView类实现实现
#ifndef GRAPHICSVIEW_H
#define GRAPHICSVIEW_H

#include <QtWidgets>
#include <QGraphicsView>
#include "GraphicsScene.h"
#include "GraphicsItem.h"

//#include <QGraphicViewMouseEvent>

class GraphicsScene;

class GraphicsView : public QGraphicsView
{
    Q_OBJECT
public:
    GraphicsView(QWidget *parent = nullptr)
    {


    }

protected:
    void mousePressEvent(QMouseEvent *event) override
    {
        if (event->button() == Qt::LeftButton && event->modifiers() == Qt::ControlModifier) {
            m_isMousePressed = true;
            m_lastMousePos = event->pos();
            setCursor(Qt::ClosedHandCursor);
        } else {
            if (event->button() == Qt::LeftButton) {
                QGraphicsItem *item = itemAt(event->pos());
                if(item)
                {
                    GraphicsItem* selectedItem = dynamic_cast<GraphicsItem*>(item);
                    if(selectedItem)
                    {
                        QString imageName = selectedItem->getImageName();
                        emit imageNameSelected(imageName);
                    }
                }
                setDragMode(RubberBandDrag);
                pressPosition = event->pos();
                m_startScenePos = mapToScene(event->pos());
                m_rubberBandDragging = true;
                m_multipleItemsSelected = (scene()->selectedItems().size() > 1);
            }
            QGraphicsView::mousePressEvent(event);
        }
    }

private:
    
Q_SIGNALS:
    void imageNameSelected(QString imageName);
};

#endif // GRAPHICSVIEW_H


ImageManager类定义
#ifndef IMAGEMANAGER_H
#define IMAGEMANAGER_H

#include <QWidget>
#include <QVector>
#include <QImage>
#include <QVBoxLayout>
#include "GraphicsItem.h"
#include "GraphicsView.h"
#include "GraphicsScene.h"
#include "ProjectWin.h"

class ImageManager : public QWidget
{
    Q_OBJECT
public:
    explicit ImageManager(/*ProjectWin* projectWin,*/QWidget *parent = nullptr);

private:
    GraphicsScene* m_scene;
    GraphicsView*  m_view;
    GraphicsItem*  m_item;
    QVector<GraphicsItem*> m_items;
    QVBoxLayout*   m_layout;

    QString m_watchPath;

//    ProjectWin* m_projectWin;
public Q_SLOTS:
    void setImagePosition(QVector<QString> &filesVec, QString &path, int groupType);

Q_SIGNALS:

};

#endif // IMAGEMANAGER_H


#include "ImageManager.h"
#include "ProjectWin.h"
#include <QMetaObject>

ImageManager::ImageManager(/*ProjectWin* projectWin,*/QWidget* parent)
    : QWidget(parent)/*, m_projectWin(projectWin)*//*, m_scene(new GraphicsScene(this)), m_view(new GraphicsView()), m_layout(new QVBoxLayout(this))*/ {

    m_scene = new GraphicsScene(this);
	m_view = new GraphicsView;

    


    m_layout = new QVBoxLayout(this);
    m_layout->addWidget(m_view);
	setLayout(m_layout);

    int winWidth = 2048;  //1642
    int winHeight = 1050;   //692
//    setFixedSize(winWidth, winHeight);
    resize(winWidth, winHeight);

	
    connect(m_view, &GraphicsView::imageNameSelected, ProjectWin::getInstance(), &ProjectWin::slotParaInfo);

}

ImageManager.obj

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

error: LNK2001: 无法解析的外部符号 “public: virtual struct QMetaObject const * __cdecl 的相关文章

  • 有没有办法向 QListView 添加部分?

    我正在使用 Qt5 2 和 C 来实现一个应用程序 需要显示一个列表 其中包含类似于下面的示例图像的部分 source ngo hung com http www ngo hung com files images contact list
  • 在 QtCreator 中使用 .pro 和 .pri 正确(树)显示 Qt 项目

    是否可以使用项目包含文件 pri 显示不止一个额外级别 例如如果 pro文件包括 pri文件包含两个 pri files pro pri pri pri 在 QtCreator 项目 中显示具有误导性 pro pri pri pri 它根本
  • 如何在QT上暂停和重新启动Qtimer

    我有 Ubuntu 我正在使用 IDEQT on C 我将暂停和恢复计时器 例如 void Ordonnancer les taches on pushButton clicked connect dataTimer SIGNAL time
  • QMainWindow 上的 Qt 布局

    我设计了一个QMainWindow with QtCreator s设计师 它由默认的中央小部件 aQWidget 其中包含一个QVBoxLayout以及其中的所有其他小部件 现在我想要的一切就是QVBoxLayout自动占据整个中央小部件
  • QML 中可重用的字体属性[重复]

    这个问题在这里已经有答案了 在 QML 中 我希望能够定义一组字体属性以进行简单的语义重用 例如 代替 Text text This is a header font family Encode Sans weight Font Black
  • 将 jstring 转换为 QString

    我正在调用一个返回字符串的 Java 函数 QAndroidJniObject obj QAndroidJniObject callStaticObjectMethod
  • Qt 嵌入式触摸屏 QMouseEvents 在收到 MouseButtonRelease 之前未收到

    我在带有触摸屏的小型 ARM 嵌入式 Linux 设备上使用 Qt 4 8 3 我的触摸屏配置了 tslib 并对其进行了校准 因此 etc 中有一个 pointcal 文件 我的触摸事件的位置工作得很好 但无论如何我都会在鼠标按下或鼠标释
  • QTableView 并双击一个单元格

    我正在开发测试用例编辑器 该编辑器包含 USART 传输和接收数据包格式 编辑器是一个表格视图 发送和接收数据包的长度为八个字节 例如 0x01 0x02 0x03 0x08 它在我的第五和第六栏中 现在 我希望此列中的单元格为只读 但是当
  • 连接到 QNetworkReply::error 信号

    我正在使用 Qt5 的新连接语法 QNetworkReply 有一个名为error http qt project org doc qt 5 0 qtnetwork qnetworkreply html error 2还有一个函数叫做err
  • PyQt4 信号和槽

    我正在使用 PyQt4 编写我的第一个 Python 应用程序 我有一个 MainWindow 和一个 Dialog 类 它是 MainWindow 类的一部分 self loginDialog LoginDialog 我使用插槽和信号 这
  • 使用 QGraphicsScene 实现流畅的动画

    我希望我的问题并不总是同样的问题 我有一个 QGraphicsScene 它的项目是一些 QGraphicsPixmap 我用一个计时器来移动它们 每秒 SetX 10 我设置 10是因为窗口大100 使用这个解决方案我的动画不流畅 我想我
  • 即使我在单独的线程中运行,QT GUI 也会冻结

    我有一个小型聊天应用程序 其中使用 SQLite 数据库来存储所有对话 我注意到该应用程序随机冻结 然后我必须最小化和最大化它才能使其再次工作 我认为问题可能是 SQLite 选择 插入导致 gui 冻结 我决定尝试将所有 SQLite 方
  • QAbstractItemModel 如何表示树?

    我仍然很难理解 QAbstractItemModel 对项目的表示 有两种返回 QModelIndex 项的方法对我来说没有任何意义 QModelIndex QAbstractItemModel index int row int colu
  • Qt:更改 Mac OS X 上的应用程序 QMenuBar 内容

    我的应用程序对多个 页面 使用 QTabWidget 其中顶级菜单根据用户所在的页面而变化 我的问题是 尝试重新创建菜单栏的内容会导致严重的显示问题 它在除 Mac OS X 之外的所有平台上按预期使用第一种和第三种样式 尚未测试第二种 但
  • QFileDialog::getOpenFileName 调试时崩溃,显然是由项目名称引起的?

    我遇到了一个让我非常困惑的问题 我在 Windows 7 上使用 Qt Creator 3 1 2 和 Qt 5 3 使用 MSVC 10 0 编译器和 Windows 8 1 调试工具中的 CDB 不确定我是否应该寻找特定于 Window
  • Qt - 如何使用 QNetworkAccessmanager 获取响应文本

    这是我的代码 Widget Widget manager new QNetworkAccessManager this connect manager SIGNAL finished QNetworkReply this SLOT repl
  • QByteArray 到整数

    正如您可能从标题中看出的那样 我在转换QByteArray为一个整数 QByteArray buffer server gt read 8192 QByteArray q size buffer mid 0 2 int size q siz
  • 使用 qbs 构建 qt 应用程序

    我想知道在 Linux 上使用 qbs 编译 构建和创建 Android Qt 应用程序的步骤 我拥有所有必要的工具 目前我可以使用 qmake 创建 apk Qbs 目前不支持构建 Qt Android 应用程序 Qbs v1 4 中引入
  • QWebEngineView 在 load() 或 page() 方法上崩溃

    我正在致力于将 Qt 5 5 QWebView 项目移植到 Qt 5 6 测试版 QWebEngine 我已经阅读了移植指南here https wiki qt io Porting from QtWebKit to QtWebEngine
  • qdbusxml2cpp 未知类型

    在使用 qdbusxml2cpp 程序将以下 xml 转换为 Qt 类时 我收到此错误 qdbusxml2cpp c ObjectManager a ObjectManager ObjectManager cpp xml object ma

随机推荐

  • Matlab利用模拟退火算法求解旅行商(TSP)问题

    简介 先引入一个例题 旅行商问题 TSP 假设有一个旅行商人要拜访n个城市 已知这n个城市的坐标 他必须选择所要走的路径 路径的限制是每个城市只能拜访一次 而且最后要回到原来出发的城市 路径的选择目标是要求得的路径路程为所有路径之中的最小值
  • git 查看/修改用户名、密码

    用户名和邮箱地址的作用 用户名和邮箱地址是本地git客户端的一个变量 不随git库而改变 有朋友说这里没有git修改密码的 特意在这里补充一下 git config global credential helper store 输入这个命令
  • dup2函数:复制文件描述符示例

    dup函数用于复制文件描述符 这样使得两个描述符指向同一个文件 这就类似于linux中的硬链接 此时内核会在内部维护一个计数为2 如果关闭其中一个不能真正的关闭文件 当计数为0时即两个文件描述符都被关闭 这个文件才真正被关闭 dup2函数作
  • LeetCode打卡——62.不同路径

    LeetCode打卡 62 不同路径 题目描述 一个机器人位于一个 m x n 网格的左上角 起始点在下图中标记为 Start 机器人每次只能向下或者向右移动一步 机器人试图达到网格的右下角 在下图中标记为 Finish 问总共有多少条不同
  • 微信支付:JSAPI或APP拉起支付,return_msg=签名错误

    1 发送给微信的参数xml 下图中的商户key就是微信后台设置的appsecret 2 复制到 微信支付接口签名校验工具 本文适用如下图是检测通过的 如果跟我一样 检测通过了 但下单接口仍返回 签名错误 唯一的问题就是 签名方法传的key用
  • 那些你不知道的表结构设计思路--开源软件诞生9

    ERP表结构的设计 第9篇 用日志记录 开源软件 的诞生 赤龙 ERP 开源地址 点亮星标 感谢支持 与开发者交流 kzca2000 码云 https gitee com redragon redragon erp GitHub https
  • 【JavaScript高级】手写apply()、call()、bind()

    文章目录 手写之前 apply call 封装函数实现apply和call bind 参考 手写之前 我们有一个函数foo 已知 foo的隐式原型是绑定在Function的显式原型上的 Function是一个构造函数 function fo
  • IPSec技术的基本原理详解及应用场景

    IPSec技术的基本原理详解及应用场景 IPSec简介 IPSec的英文是Internet Protocol Security 是一个协议包 通过对IP协议的分组进行加密和认证来保护IP协议的网络传输协议族 一些相互关联的协议的集合 IPs
  • rtx 3060 notebook cuda 与 gpu驱动安装

    cudnn的下载与安装 需要用户登录nvidia 然后再进入该地址 https developer nvidia com rdp cudnn archive https developer download nvidia cn comput
  • 配置Nginx正向代理

    需求 UAT需要在10 xx xx xx部署一个正向代理 端口号是80 要访问的外网域名为http api cn xxx com 1 查看80端口和外网是否畅通 telnet 10 xx xx xx 80 curl http api cn
  • 【Java学习004】Map集合遍历

    方式1使用Map Entry进行遍历 在for循环中使用 Map Entry 对象实现Map对象的遍历 public class Test public static void main String args Map
  • RNN,LSTM,GRU回顾(主要知道代码怎么使用)

    RNN的计算流程 RNN的计算流程图如下图所示 nn RNN的初始化是这样规定的 rnn nn RNN input size hidden size bias False batch first True 这里的input size就是其中
  • libjasper-dev 安装问题

    libjasper dev Depends libjasper1 1 900 1 debian1 2 4 deb8u1 but 1 900 1 debian1 2 4 deb8u3 is to be installed 执行 sudo ap
  • Xpath-helper下载及安装(爬虫必备-Chrome插件)

    一 下载 百度网盘链接下载 xpath helper crx 链接 https pan baidu com s 11IYyYJBGUiR3BY7cS7sLOA 提取码 iefg 二 安装 1 打开chrome页面 点击 右上角三个点 更多工
  • 云计算~Linux的常用命令

    云计算 Linux的常用命令 常用命令 kernels Shell与内核 内部命令与外部命令 ls命令 help man命令 pwd命令 cd命令 alias命令 du命令 touch命令 ln命令 cp命令 rm命令 which 命令 f
  • 机器学习--近邻成分分析(NCA)算法 和 度量学习

    1 近邻成分分析 NCA 算法 以上内容转载自 http blog csdn net chlele0105 article details 13006443 2 度量学习 在机器学习中 对高维数据进行降维的主要目的是找到一个合适的低维空间
  • dz论坛ucenter打不开mysql_Discuz和Ucenter安装出现PHP无法连接MYSQL情况

    安装时出现mysql connect 不支持请检查mysql模块是否正确加载这时候方意识到情况的严重 因为安装MYSQL的时候没有去测试与PHP的连接 PHP测试用测试过没问题 网址 安装时出现mysql connect 不支持 请检查 m
  • pandas常见用法总结:数据筛选,过滤,插入,删除,排序,分组聚合等

    pandas里面的用法相对非常灵活 经常会有一种需求可以采用多种方式实现的情况 为了方便查找与记忆 特此对pandas里面常见的一些用法 1 选择指定列 选择指定列是常见的需求 同样的实现方式也非常多 1 1 pd read csv 常用的
  • vue 键盘(上下左右)快捷键

    keydown 在键盘上按下某个键时触发 如果按住某个键 会不断触发该事件 但是 Opera 浏览器不支持这种连续操作 keypress 按下某个键盘键并释放时触发 如果按住某个键 会不断触发该事件 该事件处理函数返回 false 时 会取
  • error: LNK2001: 无法解析的外部符号 “public: virtual struct QMetaObject const * __cdecl

    Qt系列文章目录 文章目录 Qt系列文章目录 前言 一 QtCreator中qmake命令是什么 2 解决 前言 我在代码中加入了对应的信号和槽 但编译仍然报错 ifndef PROJECTWIN H define PROJECTWIN H