目的:为了解决一些功能简单的按钮不想特地专门开一个槽函数进行处理的,或者多个按钮有类似功能的,进行统一处理时候可以比较方便
使用:继承一个QDialog或者QMainWindow或QWidget或者直接粘贴进去
使用头文件:QSignaMapper
描述:
obj指定最顶层的空间Id
prefix即为前缀
mapper指定一个
/**
* @brief 把目标按钮给绑定到SignalMapper上
* @details 例子: prefix 传 "B"则所有 Bxx_yyyy 的按钮都会被映射到ID号为xx的QSignalMapper上
* @param obj
* @param prefix
* @param mapper
*/
void QDialogEx::targetButtonMapped(QObject* obj, QString& prefix, QSignalMapper& mapper)
{
QObjectList list = obj->children();
if (list.size() == 0)
{
return;
}
foreach (auto &o, list)
{
if (o->inherits("QPushButton"))
{
if (!o->objectName().startsWith(prefix))
{
continue;
}
QStringList part = o->objectName().split("_");
QString num = part.at(0).split(prefix).at(1);
connect(o, SIGNAL(clicked(

本文介绍了如何使用Qt中的QSignalMapper组件,结合递归搜索特定名称的按钮,实现功能简单的按钮点击事件的统一处理。通过设置顶层对象、前缀并定义槽函数,可以在不为每个按钮单独创建槽的情况下简化代码。示例包括了构造函数、槽函数和UI界面的配置。
最低0.47元/天 解锁文章
3473

被折叠的 条评论
为什么被折叠?



