不是什么时候都可以用栈来声明对象并使用(自动释放)——Delphi里到处都是编译器魔法,并且自动帮助实例化界面
voidMyMain::mouseMoveEvent(QMouseEvent*event){/*如果是鼠标左键事件*/if(event-buttons()Qt::LeftButton){/*获取界面顶部坐标*/intnMainTop=this-geometry().top();//intnMainBottom=this-geometry().bottom();QPointnMouseY=event-globalPos();/*只能在鼠标上方拖动窗口*/if((nMainTop-nMouseY.y())(-50)){return;}//移动中的鼠标位置相对于初始位置的相对位置.QPointrelativePos=event-globalPos()-m_startPoint;//然后移动窗体即可.this-move(m_windowPoint+relativePos);}}

MFC更新分界面,用哪类方法好
近些日子在做一个MFC对话框程序。情状是这么的,
后生可畏、程序主对话框上,点击开关,展开一个非模态的子对话框窗口,子对话框里推行一些操作后需求把操作的结果跟新到主对话框上。想到三种方法:
1.子对话框窗口类中保存主对话框指针,然后在子对话框窗口类利用该指针更新主对话框分界面
2.自定义新闻,利用SendMessage或PostMessage函数发送新闻到主对话框,函数的lParam参数保存操作的结果。主对话框收到消息后更新分界面。
请问哪大器晚成种方法好。

一贯都赏识那样彰显窗口,因为简单火速:

分界面本人隐瞒了windows的题目栏,最小化和停业按键间接做在了分界面上,重写那一个函数后如此做出来的分界面,鼠标左键按着分界面下面地点能够拖动窗口.可是指针连忙乱晃的话会轻松现身指针脱离了窗口顶上部分导致无法移动.我试了下别的软件比如feiq之类不会有这些主题素材啊.是那些写法非凡?!

二、子对话框类中创制了一个线程,线程里推行一些操作,操作结果供给更新到子对话框分界面上。如故长久以来的主题材料,是传递指针好,仍然选拔消息好。从前学过C#,C#当中,非UI线程无法直接访谈UI线程的分界面成分。

void MainWidget::ShowMyWindow()
{
    MyWidget form(this);
    form.resize(760,611);
    form.exec();
}

恳请各位路过的大神辅导一下

几日前意想不到想到一个难点,栈的上空独有1M要么2M,贰个窗口假诺数量超级多以来,就装不下,当时就不能够接收栈来注脚、使用和销毁对象了。所以将在这样写:

void MainWidget::ShowMyWindow()
{
    MyWidget* form;
    form = new MyWidget(this);
    form->resize(760,611);
    form->exec();
    delete form;
}

因为好奇,所以起初实地衡量了风姿浪漫晃:

void MainWidget::ShowMyWindow()
{
    Util::ShowMessage(sizeof(MyWidget));
}

那么些窗口也就112字节,离1024还超远。但那也是因为全体分界面成分都是动态变化的,全体分界面成分在.h文件里全部是指针注明。否则的话,那也是十一分的。

新兴又测验了主窗口MainWidget,也就160,看来是十足了。

返回列表