如何将sender()名称转换为int [duplicate]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将sender()名称转换为int [duplicate]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我有一个程序,其中创建了许多组合框,这个数字等于数组的长度。我需要确保当信号currentIndexChanged被发送到我的插槽时,插槽知道组合框的索引以及哪个组合框发送它。第一个组合框的索引需要写入数组中的第一个元素。要做到这一点,插槽需要知道哪个组合框发送了信号。我尝试通过QSignalMapper完成此操作,但只能发送一个参数。我也尝试使用sender()函数但返回的是一个对象而不是对象的编号。有什么方法可以做到这一点吗?

    int lenght = sizeof(countries)/sizeof(countries[0]);

        for(int x=0; x<=lenght-1; x++)
  {

            QComboBox* combo = new QComboBox;
            combo->addItem("Present");
            combo->addItem("Present and Voting");
            combo->addItem("Absent");
            combo->addItem("Absent from Commitee");
 formLayout->addRow(countries[x],combo);
 connect(combo, SIGNAL(currentIndexChanged(int)), this, SLOT(roll(int)));

   }
答案

在创建小部件时,请执行此操作

combo->setProperty("MyIndex", x);

(选择要品尝的属性名称;实际的字符串无关紧要)。

接收信号时,请执行此操作

int x = sender()->property("MyIndex").toInt();

以上是关于如何将sender()名称转换为int [duplicate]的主要内容,如果未能解决你的问题,请参考以下文章

SQL 问题:如何将多个结果转换为单行?

sql 2005 可以将varchar值转换为int值吗?

无法将类型“Range<Int32>”的值转换为预期的参数类型“Range<_>”

如何将所有JTable行转换为字符串数组?

如何将字节数组转换为流 [重复]

如何将int转换成double