隐藏的重载虚函数 OSX QT4

Posted

技术标签:

【中文标题】隐藏的重载虚函数 OSX QT4【英文标题】:Hidden overloaded virtual function OSX QT4 【发布时间】:2017-05-02 10:23:27 【问题描述】:

编译时在我的 Mac 上遇到 QT4 问题

在 playlistWidget.cpp:16 中包含的文件中: ./playlistWidget.h:121:16:警告:“NPlaylistWidget::mimeData”隐藏 超载 虚函数 [-Woverloaded-virtual] QMimeData *mimeData(const QList items) const; ^ /opt/local/libexec/qt4/Library/Frameworks/QtGui.framework/Versions/4/Headers/qlistwidget.h:280:24: 笔记: 隐藏的重载虚函数 'QListWidget::mimeData' 在这里声明: 第一个参数的类型不匹配('const QList' vs '常量 QList') 虚拟 QMimeData *mimeData(const QList items) const; ^

我的代码:

private:
        QPointer<QDrag> m_itemDrag;
        bool m_fileDrop;
        QList<QUrl> m_mimeDataUrls;
        QStringList mimeTypes() const;
        QMimeData *mimeData(const QList<NPlaylistWidgetItem *> items) const;
        bool dropMimeData(int index, const QMimeData *data, Qt::DropAction action);
    #ifdef Q_WS_MAC
        Qt::DropActions supportedDropActions() const;
    #endif
    protected:
        void dropEvent(QDropEvent *event);
        void dragEnterEvent(QDragEnterEvent *event);
        void dragMoveEvent(QDragMoveEvent *event);
        void dragLeaveEvent(QDragLeaveEvent *event);
        void mouseMoveEvent(QMouseEvent *event);

我该如何解决?

【问题讨论】:

这似乎是一个警告,通常不应破坏编译。您可以检查 macOS 项目构建设置中的“将警告视为错误”设置吗?如果是“是”,请尝试“否” 是的,是警告,但是是拖放功能,编译后不起作用。 【参考方案1】:

函数签名是: QMimeData *mimeData(const QList&lt;QListWidgetItem *&gt; items) const

您的 QList 由 NPlaylistWidgetItem * 参数化,用于签名: QMimeData *mimeData(const QList&lt;NPlaylistWidgetItem *&gt; items) const

将参数更改为 QListWidgetItem * 应该没问题。 一般建议至少使用 -Wall -Wextra -Werror 进行编译

【讨论】:

以上是关于隐藏的重载虚函数 OSX QT4的主要内容,如果未能解决你的问题,请参考以下文章

14. 函数重载,函数覆盖,函数隐藏

14. 函数重载,函数覆盖,函数隐藏

C++笔记之多态

C++笔记之多态

C++笔记之多态

函数的重载重写与隐藏