for(int i = 0 ; i < vToolBtn.size();i++) { connect(vToolBtn[i],&QToolButton::clicked,[=](){ if(exchangeStatue[i]){ QString str = QString("%1窗口已经被打开了").arg(vToolBtn[i]->text()); QMessageBox::warning(this, "警告", str); return; } //弹出聊天对话框 exchange * e = new exchange(0, nameList[i]); exchangeStatue[i] = true; e->setWindowTitle(nameList[i]); e->show(); e->move(700, 240); connect(e, &exchange::closeWidget, [=](){ exchangeStatue[i] = false; }); }); } }
时间: 2024-02-14 15:21:41 浏览: 17
QToolButton.rar
这段代码使用一个for循环为每个QToolButton添加了一个clicked信号的槽函数。当按下一个QToolButton时,如果exchangeStatue[i]为true,则显示一个警告对话框,告诉用户已经打开了该窗口。否则,创建一个名为e的exchange对象,并将其显示出来。exchange是一个聊天对话框类,第一个参数是父对象,这里传递了0,表示没有父对象。第二个参数是聊天对话框的标题,这里使用了nameList[i]。然后将exchangeStatue[i]设置为true,表示该窗口已经被打开。最后,将聊天对话框移动到指定的位置,并且为它的closeWidget信号添加了一个槽函数,当聊天对话框被关闭时,将exchangeStatue[i]设置为false,表示该窗口已经关闭。
阅读全文