首页 > 编程语言 >c++ 样式错误 “Unknown property transition” /“Could not parse stylesheet of object 0xb88164f8”

c++ 样式错误 “Unknown property transition” /“Could not parse stylesheet of object 0xb88164f8”

时间:2024-12-11 11:45:49浏览次数:10  
标签:控件 widget obj Unknown Could object qDebug include GPS

解决办法

  1. 通过遍历所有的控件,
  • “Unknown property transition
  1. 打印出所有的控件地址,将地址 GPS 2>&1 log.log 输出到log日志中
  • “Could not parse stylesheet of object 0xb88164f8”
  1. 关键函数QString getWidgetHierarchy(QObject* widget) 获得所有的控件
#include <QApplication>
#include "gps_mainwindow.h"
#include <QTextCodec>
#include <QMessageBox>

#include <QStyleFactory>
#include "gps_protocal_test.h"
#include "global_define.h"
#if defined(Q_OS_UNIX)

#endif

#include "../goose/gps_gooseinimgr.h"


using namespace std;

// 辅助函数:递归获取控件的层级路径
QString getWidgetHierarchy(QObject* widget) {
    QStringList hierarchy;
    while (widget) {
        QString name = widget->objectName();
        if (name.isEmpty()) {
            name = widget->metaObject()->className();
        }
        hierarchy.prepend(name);
        widget = widget->parent();
    }
    return hierarchy.join(" -> ");
}


#include <QApplication>
#include <QWidget>
#include <QPointer>
#include <QDebug>
#include <QTextCodec>
#include <QMessageBox>
// 打印所有控件及其地址
void printAllWidgetAddresses() {
    foreach (QObject* obj, qApp->allWidgets()) {
        QWidget* widget = qobject_cast<QWidget*>(obj);
        if (widget) {
            qDebug() << "Widget Address:" << widget << "Class Name:" << widget->metaObject()->className();
        }
    }
}

int main(int argc, char* argv[])
{
	qputenv("QT_IM_MODULE", ("Qt5Input"));

	QApplication a(argc, argv);
//	writeLog("main");
	int ret;
#if defined(Q_OS_UNIX)
	//设置字符节
	a.setFont(QFont("simsun", 12));
	QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));			//路径名支持中文
#else
	QTextCodec* locale_codec = QTextCodec::codecForLocale();
	if (!locale_codec) {
		QMessageBox::critical(0, "启动失败", "取本地编码类型失败");
	}


#endif
	GPS_InitManager			InitManager;
	GPS_gooseIniMgr			initGooseini;
	GPS_serialManager		serial;
	GPS_bordcast			bordcast;
	GPS_protocal_test::loaddll("gpsbwjx");



	GPS_MainWindow w;
	w.show();
	// "Cleanlooks": 一个简单的、无修饰的控件样式,旨在提供一个统一的、现代的外观。
	//QApplication::setStyle(QStyleFactory::create("Fusion"));
    // 遍历所有控件,检查不支持的样式属性
    foreach (QObject* obj, qApp->allWidgets()) {
        QWidget* widget = qobject_cast<QWidget*>(obj);
        if (widget) {
            QString styleSheet = widget->styleSheet();
            if (styleSheet.contains("transition", Qt::CaseInsensitive)) {
                qDebug() << "Unsupported 'transition' property found in widget:";
                qDebug() << "Widget Hierarchy:" << getWidgetHierarchy(widget);
                qDebug() << "StyleSheet:" << styleSheet;
            }
        }
    }


	
 // 记录所有控件的地址
    printAllWidgetAddresses();

    // 记录出错的控件地址列表
    QList<QPointer<QWidget>> problematicWidgets;

    // 假设你已经确定了有问题的控件地址,可以在这里添加它们
    // 但要确保控件的地址是有效的,或者通过其他方式获取控件对象
    foreach (QObject* obj, qApp->allWidgets()) {
        QWidget* widget = qobject_cast<QWidget*>(obj);
        if (widget) {
            qDebug() << "Checking widget at address:" << widget;

            // 添加到 problematicWidgets 列表
            problematicWidgets.append(QPointer<QWidget>(widget));
        }
    }

    // 遍历所有控件,检查并打印与出错控件地址匹配的控件信息
    foreach (QObject* obj, qApp->allWidgets()) {
        QWidget* widget = qobject_cast<QWidget*>(obj);
        if (widget) {
            QString styleSheet = widget->styleSheet();
            qDebug() << "Checking widget at address:" << widget;

            // 检查控件地址是否在出错控件地址列表中
            if (problematicWidgets.contains(QPointer<QWidget>(widget))) {
                qDebug() << "Found problematic widget!";
                qDebug() << "Widget Type:" << widget->metaObject()->className();
                qDebug() << "Widget Address:" << widget;
                qDebug() << "Widget Name:" << widget->objectName();
                qDebug() << "Widget Hierarchy:" << getWidgetHierarchy(widget);
                qDebug() << "StyleSheet:" << styleSheet;
                
                // 输出控件的父控件信息
                if (widget->parent()) {
                    qDebug() << "Parent Widget:" << widget->parent()->metaObject()->className();
                    qDebug() << "Parent Object Address:" << widget->parent();
                }
            }
        }
    }








	a.setWindowIcon(QIcon("://Resources/sign.png")); //设置系统logo图标 cyx20160513
	ret = a.exec();

	return  ret;

}

标签:控件,widget,obj,Unknown,Could,object,qDebug,include,GPS
From: https://www.cnblogs.com/sunisnyu/p/18597413

相关文章

  • 基于Objective-C和C语言的蜂巢爆料组件设计源码-Z5yUlJ1u
    基于Objective-C和C语言的蜂巢爆料组件设计源码地址该项目是基于Objective-C和C语言的蜂巢爆料组件设计源码,包含312个文件,其中包括292个PNG图片文件、4个头文件(.h)、3个属性列表文件(.plist)、1个模块映射文件(modulemap)以及一系列框架和签名文件。该组件适用于需要高效信息收集......
  • 基于Objective-C的仿百思不得姐社交应用设计源码-Z5yUlJ1x
    基于Objective-C的仿百思不得姐社交应用设计源码地址该项目是一个高度仿制的社交应用设计源码,基于Objective-C语言开发,共包含1244个文件,涵盖多种文件类型,包括419个PNG图片文件、404个头文件(.h)、163个JSON配置文件、155个Objective-C实现文件(.m)、21个XIB界面文件、17个Objective-C......
  • C#中通过ObjectPool重用对象提高程序性能
    环境说明:.NET8.0Microsoft.Extensions.DependencyInjectionv9.0.0Microsoft.Extensions.ObjectPoolv9.0.0ObjectPool重用对象先看微软官方文档的描述:Microsoft.Extensions.ObjectPool它支持将一组对象保留在内存中以供重用,而不是允许对对象进行垃圾回收如果要管理的对......
  • 解决升级SpringBoot3 JPA报Could not locate TableGroup问题
    产品技术架构从SpringBoot2.x升级到SpringBoot3.x后,对原有代码进行单元测试时发现,之前通过CriteriaQuery查询对象实现的分页查询功能,在进行记录数count查询时,会抛出SqlTreeCreationException:CouldnotlocateTableGroup异常。通过排查发现,SpringBoot2.x依赖的是Hibernate5.x,S......
  • GObject学习笔记(二)类型创建与注册
    前言本文可在https://paw5zx.github.io/GObject-tutorial-beginner-02/中阅读,体验更加在上一节中我们介绍了GObject类型的类和实例变量的创建和使用。GObject是一个基本的可实例化类类型,是所有使用GObject系统的类型的基类,提供了继承、封装、多态等面向对象的核心特性。不过我们......
  • keil中加入RTOS后报错 Error: L6242E: Cannot link object rtx_delay.o as its attrib
    编译出现以下问题:解决方法(有点怪但有用):点击Target,编译器选择version5版本在C/C++中勾选EnumContaineralwaysint点击OK后会弹出如下界面,不要慌,继续点OK关掉它重新编译,结果如下回到编译器选项,选择version6版本6.点击小绿图标7.确保RTOS已勾选重新编译,结果......
  • Unchecked runtime.lastError: Could not establish connection. Receiving end does
    背景博客园出现如下报错,虽然没什么大碍但是看着很烦。解决查了一下是某个浏览器插件的通信问题,我解决办法也很粗暴。我进无痕,直接就没有报错了,于是开始一一排查插件。最终的罪魁祸首是这个UserAgentSwitcher。关掉后问题解决了。另一个这个是博客园广告被拦截了,于是......
  • object is not an instance of declaring class
    测试反射的时候报错了代码如下packageorg.example.provider.domain;importlombok.Data;@DatapublicclassUser{publicintuserId;publicStringuserName;}publicstaticvoidmain(String[]args)throwsClassNotFoundException,NoSuchMethodExcep......
  • Java Objects.equals 比较demo
    JavaObjects.equals比较demopackagecom.example.core.mydemo.java3;importjava.util.Objects;/***output:flag=falseflag2=trueflag3=falseflag4=trueflag5=trueflag6=trueflag7=falseflag8=trueflag9=false*/publicclassObjectsTest{......
  • 随笔-bpftrace-堆栈不显示函数名|显示unknown(How to print the function name instea
    link:Howtoprintthefunctionnameinsteadoftheaddressforustack#3108ajor:Symbolicationisbasedoffthesymboltableofthetargetapplication.Itdoesn'tlooklikeyou'redoinganythingwrongtome,butyoucoulddoublecheckthatsym......