16,693
社区成员
刚学Qt+VS2022,Qt创建的MDI窗口项目,如何在主窗口设置当前子窗口的自定义public类型变量的值?
思路:在子窗口设置一个Checkbox,点击设置当前子窗口中自定义的一个变量值,为何在子窗口中无反应:
// 主窗口:setDrawLine_triggered() 用来设置子窗口中的m_bDraw_Line
void MyMainWindow::setDrawLine_triggered()
{
qDebug()<<"1: 设置前子--窗口中的:m_bDraw_Line="<<((childWidget*)ui->mdiArea->activeSubWindow())->m_bDraw_Line ;
((childWidget*)ui->mdiArea->activeSubWindow())->m_bDraw_Line = drawLineCheck.isChecked();
// 输出显示也设置成功了,但就是在子窗体中,鼠标移动画线还是默认的是true
qDebug()<<"2: 设置后--子窗口中的:m_bDraw_Line="<<((childWidget*)ui->mdiArea->activeSubWindow())->m_bDraw_Line ;
}
// 子窗口:鼠标移动画线
void childWidget::paintEvent(QPaintEvent *event)
{
qDebug()<<"m_Draw_Line:"<<m_Draw_Line;
// 问题:不管主窗体中CheckBox是否选中,一样画线。m_Draw_Line在构造函数设置为true。
if(m_bDraw_Line) DrawLine(m_Move_pos);
}
// 鼠标移动事件
void childWidget::mouseMoveEvent(QMouseEvent *event)
{
m_Move_pos = event->pos();
this->update();
}
// 另外,在主窗体用一个接口函数来设置m_Draw_Line。结果还是无反应。
void childWidget::setDrawLine(bool bdrawline)
{
m_bDraw_Line = bdrawline;
)