Qt菜单 QMenu QAction连接信号槽函数

Qt 专栏收录该内容
45 篇文章 3 订阅

Menu菜单 或 其中的QAction 连接槽函数

以下两句connect 任一均可实现:

QStringList strList;
for(int i = 0; i< strList.size(); ++i)
{
    QString tmp = strList.at(i);
    QAction *act = new QAction(tmp, m_menu);
    act->setCheckable(true);
    act->setChecked(false);
    m_menu->addAction(act);
    connect(act, SIGNAL(triggered()), this, SLOT(checkedAction()));
}
//connect(m_menu, SIGNAL(triggered(QAction*)), this, SLOT(checkedLibAction(QAction*)));


QSignalMapper 

      signalMapper = new QSignalMapper(this);

      for (int i = 0; i < texts.size(); ++i) {
          QPushButton *button = new QPushButton(texts[i]);
          connect(button, SIGNAL(clicked()), signalMapper, SLOT(map()));
          signalMapper->setMapping(button, texts[i]);
      }
      connect(signalMapper, SIGNAL(mapped(QString)), this, SIGNAL(clicked(QString)));


QSignalMapper 官方介绍:

The QSignalMapper class bundles signals from identifiable senders.

    void setMapping(QObject *sender, int id);
    void setMapping(QObject *sender, const QString &text);
    void setMapping(QObject *sender, QWidget *widget);
    void setMapping(QObject *sender, QObject *object);
    void removeMappings(QObject *sender);

Q_SIGNALS:
    void mapped(int);
    void mapped(const QString &);
    void mapped(QWidget *);
    void mapped(QObject *);

这四种捆绑方式,使用超级灵活。同一个sender在一个map中可以被捆绑多次;

int 型的以及 QString、QWidget等 的Map捆绑互相独立,互不影响。

以及一个 signalMap 的 mapped信号最多可以连接到4个不同类型的槽函数,这四个信号槽相互独立。



  • 5
    点赞
  • 0
    评论
  • 15
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页

打赏作者

非长道

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值