Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 为什么要使用QObject::setObjectName()?_Qt - Fatal编程技术网

Qt 为什么要使用QObject::setObjectName()?

Qt 为什么要使用QObject::setObjectName()?,qt,Qt,为什么要向QObject添加对象名?我仍然可以在不设置名称的情况下加载和运行任何对象。在对象可编写脚本的情况下,这是有意义的,并且可以这样与findChild一起使用 //button is the object name, which needs to be define in qml for the component.e.g. objectName: "button" QObject *buttonQML = view.rootObject()->findChild<QObje

为什么要向QObject添加对象名?我仍然可以在不设置名称的情况下加载和运行任何对象。

在对象可编写脚本的情况下,这是有意义的,并且可以这样与findChild一起使用

//button is the object name, which needs to be define in qml for the component.e.g. objectName: "button"
QObject *buttonQML = view.rootObject()->findChild<QObject*>("button"); 
//按钮是对象名,需要在qml中为组件定义该名称。objectName:“按钮”
QObject*buttonQML=view.rootObject()->findChild(“按钮”);

其中“button”是对象名

有两个原因,我使用对象名的一个主要原因是出于调试目的,如前所述。

好的,这取决于您以后计划如何访问QObject。有几个QObject.find()函数可用于访问QObject。该名称添加一个“键”以过滤搜索

例如,在您自己的类中,您可能会使用实例变量来执行此操作,而不是执行搜索,但实际上可能会传递一些您通常不拥有的内容,但您知道有一个特定的按钮需要编辑(例如,Qt内置对话框中的QPushButton)。给按钮起一个名字可以很容易地找到(如果按钮消失、在布局中移动等,它会很健壮),而检查按钮文本或计算它在层次结构中的位置则会更加脆弱(例如,按钮文本可能在版本之间发生变化,或者由于本地化,有人添加了一个新的布局、一个额外的按钮)

或者,在打印指针值时,您可能只需要一些漂亮的调试文本(即,您想知道哪个QObject导致了问题)。它还使脚本编写更容易,但我不会在这里解释原因


这只是冰山一角。如果您需要,并且只有您知道答案,您才需要设置名称。:-)

您可以将对象的名称用作Qt样式表中的

示例:如果希望属性仅应用于一个特定的QLineEdit,可以使用QObject::setObjectName()为其命名,并使用ID选择器引用该属性:

 myDialog->setStyleSheet("QLineEdit#nameEdit { background-color: yellow }");