Qt - QObject设置对象名称和设置属性

一、设置对象名

引言:假如有多个一样的按钮控件,我们如何区分对应按钮发出的信号呢,如何区分多个按钮?

可以使用setObjectname()函数来绑定一个值,相当于给按钮设置一个唯一id,做区分。

setObjectName()

函数描述:用来设置对象的名字,不同对象可以重复

QPushButton *button1 = new QPushButton("Button1", this);
button1->setObjectName("button1");

objectName()

函数描述:获取对象的名字

QString strobj = button1->objectName();
qDebug()<<"strobj = "<<strobj;

示例代码:

在Qt中,可以通过设置不同的objectName来区分多个按钮,或者使用不同的实例指针。另外,也可以使用标签(text)来区分按钮,或者将按钮的property设置为不同的值。

以下是使用objectName来区分按钮的例子:

QPushButton *button1 = new QPushButton("Button1", this);
button1->setObjectName("button1");
 
QPushButton *button2 = new QPushButton("Button2", this);
button2->setObjectName("button2");
 
// 连接按钮的clicked信号到相应的槽函数
connect(button1, &QPushButton::clicked, this, &YourClass::onButtonClicked);
connect(button2, &QPushButton::clicked, this, &YourClass::onButtonClicked);

在槽函数中,可以通过QObject::sender()来判断是哪个按钮被点击:

void YourClass::onButtonClicked() 
{
    QPushButton *button = qobject_cast<QPushButton *>(sender());
    if (button->objectName() == "button1") 
    {
        // button1被点击
    } 
    else if (button->objectName() == "button2") 
    {
        // button2被点击
    }
}

以上代码展示了如何通过设置objectName来区分不同的按钮,并在点击事件处理函数中根据objectName来判断是哪个按钮被点击。

 

 

findChild()

函数描述:通过父部件来查找孩子

函数原型:

//通过父部件来 -“查找孩子”。
T QObject::findChild(const QString & name = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const

查找选项 枚举Qt::FindChildOption:

Qt::FindChildOptions是一个QFlags<FindChildOption>类型定义,它存储一个或FindChildOption的组合值。

常量  值  描述
Qt::FindDirectChildrenOnly 0x0 查找object的直接孩子
Qt::FindChildrenRecursively 0x1 查找object的所有孩子(递归搜索)

这个示例,返回parentWidget中一个名为“button1”的QPushButton孩子,即使按钮不是父亲的直接孩子:

QPushButton *button = parentWidget->findChild<QPushButton *>("button1");

 这个示例,返回parentWidget中的一个QListWidget孩子:

QListWidget *list = parentWidget->findChild<QListWidget *>();

这个示例,返回parentWidget(它的直接父亲)中一个名为“button1”的QPushButton孩子:

QPushButton *button = parentWidget->findChild<QPushButton *>("button1", Qt::FindDirectChildrenOnly);

这个示例,返回parentWidget(它的直接父亲)中的一个QListWidget孩子:

QListWidget *list = parentWidget->findChild<QListWidget *>(QString(), Qt::FindDirectChildrenOnly);

 

 

二、设置属性

作用:用来作为id选择器和属性选择器,来设置qss样式

具体使用方法可参考我这篇文章:https://www.cnblogs.com/zhuchunlin/p/17987621

setProperty()

函数描述:用来设置属性

//设置label对象的hehe属性为呵呵
label.setProperty("hehe",'呵呵')

property()

函数描述:用来获取对象的属性

label.property("hehe")

 

posted @   [BORUTO]  阅读(375)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示