如何捕获在Qt C++中调用setStyleSheet()时打印的错误

How do I capture errors printed when calling setStyleSheet() in Qt C++?

本文关键字:打印 错误 setStyleSheet 调用 何捕获 Qt C++      更新时间:2023-10-16

例如:

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

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

Unknown property hight

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

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

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

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

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