线程评分:
  • 0投票 - 0平均
  • 1
  • 2
  • 3
  • 4
  • 5
C ++样本应用程序中的itemuserpick冻结
在某些情况下,itemuserpick()方法将使整个应用程序冻结。
要使用现有的C ++样本应用程序复制,请简单地:

- 开始样本
- 单击“集成Robodk窗口”
- 在车站中添加第一个机器人,然后在第二个机器人中添加参考框架(如附件屏幕截图)
- 单击“选择机器人”按钮

样品被冷冻。

我将Rododk窗口集成在QT应用程序中也有同样的问题。


附加的文件 缩略图(S)

我认为此问题与Robodk使用QT应用程序时被阻止的主循环有关。当您将嵌入式窗口与Robodk一起使用,并且使用API​​从Robodk显示一个阻止对话框时,此问题将发生。

您可以通过检索所有项目来创建自己的此弹出框(itemuserpick)的版本,然后让用户选择一个。
是的,这就是我所做的。
这是我直接在C ++ API中所做的事情:

item robodk :: itemuserpick(const qString&Message,int itemType){
qlist item_list = getItemList(itemType);
if(item_list.isempty())
归还物品();
否则if(item_list.count()== 1)
返回item_list.first();

//使用QT选择项目
qStringList item_name_list;
for(int i = 0; i item_name_list.append(item_list.at.at(i).name());
Bool OK;
qString item = qinputdialog :: getItem(qapp-> activeWindow(),消息,消息,item_name_list,0,false,&ok);
if(ok == false || item.isempty())
归还物品();
int index = item_name_list.indexof(item);
返回item_list.at(index);

}

也许C ++ API可以与itemuserpick()的类似方式更新?

最好的祝福,
弗朗索瓦。




用户浏览此线程:
1位客人