帖子:11
线程:5
加入:2021年8月
名声:
0
08-23-2021,05:21 PM
(该帖子是最后修改的:08-24-2021,03:14 pm by阿尔伯特)
在某些情况下,itemuserpick()方法将使整个应用程序冻结。
要使用现有的C ++样本应用程序复制,请简单地:
- 开始样本
- 单击“集成Robodk窗口”
- 在车站中添加第一个机器人,然后在第二个机器人中添加参考框架(如附件屏幕截图)
- 单击“选择机器人”按钮
样品被冷冻。
我将Rododk窗口集成在QT应用程序中也有同样的问题。
帖子:1,374
线程:1
加入:2018年4月
名声:
68
我认为此问题与Robodk使用QT应用程序时被阻止的主循环有关。当您将嵌入式窗口与Robodk一起使用,并且使用API从Robodk显示一个阻止对话框时,此问题将发生。
您可以通过检索所有项目来创建自己的此弹出框(itemuserpick)的版本,然后让用户选择一个。
帖子:11
线程:5
加入:2021年8月
名声:
0
是的,这就是我所做的。
这是我直接在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()的类似方式更新?
最好的祝福,
弗朗索瓦。