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")
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具