线程评级:
ItemUserPick冻结在c++示例应用程序中
# 1
在某些情况下,ItemUserPick()方法将使整个应用程序冻结。
要使用现有的c++示例应用程序进行复制,只需:

-启动样本
-点击“集成RoboDK窗口”
-在空间站中添加第一个机器人,然后是第二个,然后是一个参考框架(就像附件中的截图一样)
-点击“选择机器人”按钮

样品被冷冻了。

在Qt应用程序中集成RodoDK窗口时,我也遇到了同样的问题。


附加文件 缩略图(s)

我认为这个问题与你使用Qt应用程序时RoboDK的主循环被阻塞有关。当你在RoboDK中使用嵌入式窗口,并且使用API从RoboDK中显示阻塞对话框时,这个问题就会发生。

您可以通过检索所有项来创建这个弹出框的自己版本(ItemUserPick),并让用户从中选择一个。
# 3
是的,我就是这么做的。
下面是我直接在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()将始终工作?

最好的问候,
弗朗索瓦。




浏览此线程的用户:
1客人(年代)