【问题标题】:How do I capture errors printed when calling setStyleSheet() in Qt C++?如何捕获在 Qt C++ 中调用 setStyleSheet() 时打印的错误?
【发布时间】:2012-06-09 18:54:03
【问题描述】:

例如:

mywidget->setStyleSheet("QSlider::groove:horizontal { hight: 200px; }");

将其打印到 Qt Creator 中的控制台:

Unknown property hight

在这种情况下,程序员很明显错误在哪里,但如果是另一个人将样式表作为外部文件工作怎么办?如果该人无权访问 Qt Creator 来查看消息怎么办?捕获消息并以某种特定于应用程序的方式将其显示给用户会很好。这是重定向标准错误的简单任务吗?还是更特定于 Qt?我会很感激任何例子。谢谢。

【问题讨论】:

    标签: c++ qt stylesheet


    【解决方案1】:

    您可以使用 qInstallMsgHandler() 来捕获 Qt 的错误消息。 在此处查看文档:http://doc.qt.io/archives/qt-4.7/qtglobal.html

    我抄送文档中的示例。您可以轻松修改它以在用户界面中显示这些消息。

    void myMessageOutput(QtMsgType type, const char *msg)
     {
         switch (type) {
         case QtDebugMsg:
             fprintf(stderr, "Debug: %s\n", msg);
             break;
         case QtWarningMsg:
             fprintf(stderr, "Warning: %s\n", msg);
             break;
         case QtCriticalMsg:
             fprintf(stderr, "Critical: %s\n", msg);
             break;
         case QtFatalMsg:
             fprintf(stderr, "Fatal: %s\n", msg);
             abort();
         }
     }
    
     int main(int argc, char **argv)
     {
         qInstallMsgHandler(myMessageOutput);
         QApplication app(argc, argv);
         ...
         return app.exec();
     }
    

    注意:在 Qt 5.0 中它已被弃用。请改用 qInstallMessageHandler()。

    【讨论】:

      猜你喜欢
      • 2012-03-14
      • 2016-06-18
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 2012-04-15
      • 2011-02-04
      • 1970-01-01
      相关资源
      最近更新 更多