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

时间:2012-06-09 18:54:03

标签: c++ qt stylesheet

例如:

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

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

Unknown property hight

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

1 个答案:

答案 0 :(得分:1)

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

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

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()。