插件自定义popup弹窗
编写脚本
--清掉_weld_user_input_value变量名
clearNamedVariable("_weld_user_input_value")
do
local _popup_t = getControlSystemTime()
--1001 是自己定义的mode
popup(TraceLevel.ERROR, "ERROR","", 1001)
--等待外部设置_weld_user_input_value变量
while not variableUpdated("_weld_user_input_value", _popup_t) do sync() end
--获取并打印变量
local var = getInt32("_weld_user_input_value")
textmsg("[result]: ------> " .. var)
--可以根据这个变量的值进行后续处理...
end
- 需要自定义一个变量名,例子中是 _weld_user_input_value
- 需要自定义一个mode,要大于1000
插件代码处理
//连接信号槽
auto robot_proxy_ = api_provider_->getProgramApi()->getRobotProxy();
connect(robot_proxy_.get(), &RobotProxy::popup, this,
&WeldingProgramNodeView::onPopup, Qt::QueuedConnection);
//处理popup信号
void WeldingProgramNodeView::onPopup(int robot_index, int level,
const QString &title, const QString &msg,
int mode)
{
if ( mode == 1001) {
ChoiceDialog dg(this); //这个是自定义的弹窗,里面有三个按钮,对于结果0,1,2
dg.exec();
int ret = dg.result();//获取用户点击按钮后的结果
robot_proxy_->getRegisterControl()->setInt32("_weld_user_input_value",
ret);
}
}
效果
分别点击这三个按钮,打印如下: