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

标签 c++ qt stylesheet

例如:

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

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

未知属性高度

在这种情况下,错误所在对程序员来说是显而易见的,但是如果另一个人将样式表作为外部文件来处理怎么办?如果那个人没有访问 Qt Creator 的权限来查看消息怎么办?最好捕获消息并以某种特定于应用程序的方式将其显示给用户。这是重定向 stderr 的简单任务吗?或者它更特定于 Qt?我会很感激任何例子。谢谢。

最佳答案

您可以使用 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()。

关于c++ - 如何捕获在 Qt C++ 中调用 setStyleSheet() 时打印的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10963689/

相关文章:

html - 标签自动宽度使 td 更宽

c++ - 如何确定 QPushButton 的释放信号是自动重复还是实际鼠标释放的结果

c++ - fatal error : iostream: No such file or directory #include <iostream>

c++ - Qt 5.2/OpenCV 2.4.8 - 无法通过 VideoCapture 打开视频文件

html - 样式表未显示在 div id 选项卡中?

html - 具有 "media"属性的 CSS 导入或 <link rel...>

c++ - 如何获取 IP 地址(IPv4 为 NULL,但 IPv6 存在),内容详情

c++ - 项目符号 2.81 : Unable to find installed header?

c++ - 将 QString 转换为 Local8bit,然后将 String 转换为 QString

c++ - 我可以在 qt Creator 中使用带有 try catch 语句的断点吗?