C++ 使用QDraw-can'在Qt中绘图;未锁定图形并处于';没有最大化窗口就不能绘图

C++ 使用QDraw-can'在Qt中绘图;未锁定图形并处于';没有最大化窗口就不能绘图,c++,qt,gcc,drawing,C++,Qt,Gcc,Drawing,我在Xbuntu上使用Qt中的给定阻塞道路参数(使用QPainter)将模拟车辆从A点写入B点。我把代码上传到了 如果不最大化窗口并恢复以前的大小,则不会绘制该窗口的板。如何修复它 是否可以锁定图形?因为总是执行paintEvent方法。 当我使用setUpdatesEnabled(false)时,主窗口被冻结 paintEvent方法: void main_window::paintEvent(QPaintEvent *event) { Q_UNUSED(eve

我在Xbuntu上使用Qt中的给定阻塞道路参数(使用QPainter)将模拟车辆从A点写入B点。我把代码上传到了

  • 如果不最大化窗口并恢复以前的大小,则不会绘制该窗口的板。如何修复它
  • 是否可以锁定图形?因为总是执行paintEvent方法。 当我使用setUpdatesEnabled(false)时,主窗口被冻结
  • paintEvent方法:

        void main_window::paintEvent(QPaintEvent *event)
        {
            Q_UNUSED(event);
    
            try
            {
                if (!((this->new_city->get_size_field1() == -1) && (this->new_city->get_size_field2() == -1)))
                {
                    int x = -1;
                    int y = -1;
                    ui->actionNew_simulation->setDisabled(true);
                    this->q = new QPainter (this);
                    this->new_city->draw_city(this->q);
                    this->set_car_button();
                    this->q->end();
                }
            }
    
            catch (...)
            {
                //locked drawing
                this->end_simulation();
            }
        }
    

    感谢您的所有回答。

    使用Qt5.6尝试了github的代码,看到了网格和小型车,但没有最大化。顺便说一下,内存泄漏是因为main_window::q从未被删除。实际上,您甚至不需要有这个成员指针。只要做
    QPainter p(这个);新建城市->绘制城市(&p)谢谢你的回答。我已从主窗口加载项paintEvent方法中删除了QPaint。请不要在
    paintEvent
    中进行任何计算。只做画画。您也不需要在堆上分配
    QPainter
    ,也不需要使用异常,也不需要调用painter的
    end
    方法。