代码之家  ›  专栏  ›  技术社区  ›  Christopher Oezbek

检测QT样式表中丢失的资源

  •  1
  • Christopher Oezbek  · 技术社区  · 14 年前

    QFrame#DialogButtonTitle_SaveAsNew
    {
      background-image: url(images:DialogButtonTitle_SaveAsNew.png);
    }
    

    3 回复  |  直到 12 年前
        1
  •  2
  •   andref    14 年前

    bool MyEngine::open(QIODevice::OpenMode mode)
    {
        bool r = QFSFileEngine::open(mode);
        if (!r) {
            qWarning() << "Failed to open" << fileName();
        }
        return r;
    }
    
    QAbstractFileEngine *MyEngineHandler::create(const QString &fileName) const
    {
         return fileName.startsWith("images:") ? new MyEngine(fileName) : 0;
    }
    

    编辑。

    QResourceFileEngine ,而不是QFSFileEngine。

        2
  •  2
  •   Christopher Oezbek    12 年前

    基于@andref answer,我想到了这个,对我来说很有用(TM):

    class LoggingEngineHandler : public QAbstractFileEngineHandler
    {
    public:
      LoggingEngineHandler()
      : QAbstractFileEngineHandler()
      , m_lookUpInProgress(false)
      , m_lookUpPaths(QRegExp("^(images|meshes|app|sounds):"))
      {
        // empty
      }
    
      QAbstractFileEngine* create(const QString &fileName) const override
      {
        if (!fileName.contains(m_lookUpPaths))
          return 0;
    
        if (m_lookUpInProgress)
          return 0;
    
        m_lookUpInProgress = true;
        QFileInfo info = QFileInfo(fileName);
        m_lookUpInProgress = false;
    
        if (!info.exists())
        {
          assert(!Utilities::isRunByUser("designer"));
          LOG_WARN("Required resource file does not exist: %1%", QUtil_s(fileName));
        }
    
        return 0;
      }
    protected:
      mutable bool m_lookUpInProgress;
    
      QRegExp m_lookUpPaths;
    };
    
        3
  •  1
  •   Caleb Huitt - cjhuitt    14 年前

    当发生这种情况时,Qt可能会调用其中一个消息函数(尽管我不确定)。如果是这样,您可以安装一个消息处理程序函数,并将部分或全部消息附加到日志文件中。有一些这样做的信息 documentation for qInstallMsgHandler