职位:11
线程:5
加入时间:2021年8月
声誉:
0
08-23-2021,下午05:21
(本文最后修改:08-24-2021,03:14 PM by艾伯特)。
在某些情况下,ItemUserPick()方法将使整个应用程序冻结。
要使用现有的c++示例应用程序进行复制,只需:
-启动样本
-点击“集成RoboDK窗口”
-在空间站中添加第一个机器人,然后是第二个,然后是一个参考框架(就像附件中的截图一样)
-点击“选择机器人”按钮
样品被冷冻了。
在Qt应用程序中集成RodoDK窗口时,我也遇到了同样的问题。
帖子:1668
线程:1
加入:2018年4月
声誉:
92
我认为这个问题与你使用Qt应用程序时RoboDK的主循环被阻塞有关。当你在RoboDK中使用嵌入式窗口,并且使用API从RoboDK中显示阻塞对话框时,这个问题就会发生。
您可以通过检索所有项来创建这个弹出框的自己版本(ItemUserPick),并让用户从中选择一个。
职位:11
线程:5
加入时间:2021年8月
声誉:
0
是的,我就是这么做的。
下面是我直接在c++ api中所做的:
项目RoboDK::ItemUserPick(const QString &message, int itemtype) {
QList < Item > item_list = getItemList (itemtype);
如果(item_list.isEmpty ())
返回项目();
Else if (item_list.count()==1)
返回item_list.first ();
//使用Qt选择一个项目
QStringList item_name_list;
For (int i=0;我< item_list.count ();+ + i)
item_name_list.append (item_list.at (i) . name ());
bool好;
QString项目= QInputDialog::getItem(qApp->activeWindow(),消息,消息,item_name_list, 0, false, &ok);
if (ok==false || item.isEmpty())
返回项目();
int指数= item_name_list.indexOf(项);
返回item_list.at(指数);
}
也许c++ api可以以类似的方式更新ItemUserPick()将始终工作?
最好的问候,
弗朗索瓦。