ItemUserPick冻结在c++示例应用程序中-打印版本 +- RoboDK论坛(//www.w5838.com/forum) +——论坛:RoboDK (EN) (//www.w5838.com/forum/Forum-RoboDK-EN) +——论坛:RoboDK bug (//www.w5838.com/forum/Forum-RoboDK-bugs) 线程:ItemUserPick冻结在c++示例应用程序(/ Thread-ItemUserPick-froze-in-the-c-sample-application) |
ItemUserPick冻结在c++示例应用程序中-flauzon-08-23-2021 在某些情况下,ItemUserPick()方法将使整个应用程序冻结。 要使用现有的c++示例应用程序进行复制,只需: -启动样本 -点击“集成RoboDK窗口” -在空间站中添加第一个机器人,然后是第二个,然后是一个参考框架(就像附件中的截图一样) -点击“选择机器人”按钮 样品被冷冻了。 在Qt应用程序中集成RodoDK窗口时,我也遇到了同样的问题。 在c++示例应用程序中冻结ItemUserPick-艾伯特-08-24-2021 我认为这个问题与你使用Qt应用程序时RoboDK的主循环被阻塞有关。当你在RoboDK中使用嵌入式窗口,并且使用API从RoboDK中显示阻塞对话框时,这个问题就会发生。 您可以通过检索所有项来创建这个弹出框的自己版本(ItemUserPick),并让用户从中选择一个。 在c++示例应用程序中冻结ItemUserPick-flauzon-08-24-2021 是的,我就是这么做的。 下面是我直接在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()将始终工作? 最好的问候, 弗朗索瓦。 |