我正在尝试根据变量创建弹出菜单,如下所示:
QMenu menu(widget);
for(int i = 1; i <= kmean.getK(); i++)
{
stringstream ss;
ss << i;
string str = ss.str();
string i_str = "Merge with " + str;
QString i_Qstr = QString::fromStdString(i_str);
menu.addAction(i_Qstr, this, SLOT(mergeWith1()));
}
menu.exec(position);
在哪里:
kmean.get(K)
返回一个int
值,
mergeWith1() is some `SLOT()` which works fine
问题:
该循环仅在i=1情况下在菜单上创建操作,并忽略 的其他值i
。
附加信息
int
当使用临时值(没有 convert )进行相同的循环时,一切正常。例如 ,如果我只在循环中执行menu.addAction(i, this, SLOT(...)))
并且我的K=4,将创建一个菜单,其中包含四个操作,相应地命名为 1、2、3、4。
可能是什么问题引起的
我认为问题出在转换部分,当我转换i
为string
usingstringstream
和之后转换为QString
. 可能是价值以某种方式丢失了。我不知道。
问题:
- 如何使循环接受转换部分?
- 我在转换部分做错了什么?