• 10272阅读
  • 14回复

怎么从新建的Dialog窗口回到主窗口 [复制链接]

上一主题 下一主题
离线dou8615
 
只看楼主 倒序阅读 楼主  发表于: 2010-11-28
窗口有一个按钮,点击后,隐藏主窗口,弹出Dialog窗口,在Dialog窗口中也有一个按钮,点击后,希望关闭Dialog,重新显示主窗口。前半部分我实现了,现在点击Dialog窗口的按钮无法显示主窗口,请教一下大家,应该怎么做呢?
离线roywillow

只看该作者 1楼 发表于: 2010-11-28
dialog自定义一个信号,发送到主窗口主窗口就显示
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线dou8615
只看该作者 2楼 发表于: 2010-11-28
从主窗口到Dialog的时候我用了  
connect(pushButton,SIGNAL(clicked()),&(this->mDialog),SLOT(show()));  
其中mDialog是我在主窗口的头文件中定义的 Dialog mDialog;可是我按照这样的方法,就打不开主窗口,不知道您说的是这种方法吗,能不能详细一点,谢谢您了
离线roywillow

只看该作者 3楼 发表于: 2010-11-28
我做这种东西的时候一般是按照下面的方式进行的
void MainWindow::showHelp()
{
    if (!helpWindow)
        helpWindow = new HelpWindow(this);
    helpWindow->show();
    helpWindow->raise();
    helpWindow->activateWindow();
}

showHelp()是一个槽,helpWindow是个HelpWindow的指针
这个是仿照Qt4那本书的方式写的
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线dou8615
只看该作者 4楼 发表于: 2010-11-28
还是没有办法解决啊,哭死~~大侠能不能给我个大概流程啊,这个主窗口和dialog窗口怎么互相切换啊~~~
离线dou8615
只看该作者 5楼 发表于: 2010-11-30
我现在可以从主窗口到新建的dialog窗口,可是用相同的办法,不适用于从dialog窗口回到主窗口...是需要继承一下么?让dialog继承mainwindow?怎么做呢?
离线roywillow

只看该作者 6楼 发表于: 2010-11-30
返回的话,在dialog中自定义一个信号,在需要关闭dialog显示mainwindow的时候发出,并隐藏dialog
在mainwindow中把这个信号跟显示自己的槽connect起来
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线dou8615
只看该作者 7楼 发表于: 2010-12-01
大侠,本来我也是这样的思路,可是我不懂在dialog中怎么才能把信号发送出去让mainwindow接收到呢?
离线dou8615
只看该作者 8楼 发表于: 2010-12-02
实在没有办法了,我在dialog里面又新建了一个Mainwindow *w1 = new MainWindow; w1 -> show();写下来希望对有同样问题的童鞋们有所帮助
离线water_wf

只看该作者 9楼 发表于: 2010-12-02
难道你不知道done(xx)可以返回值嘛
离线wc_111191
只看该作者 10楼 发表于: 2010-12-02
在写主窗口的时候建立连接啊!这样对话框发出的信号主窗口就能收到了。。- -


假设你那个对话框中的按钮是button1:
void MainWindow::showHelp()
{
    if (!helpWindow){
        helpWindow = new HelpWindow(this);
connect(this->helpWindow->button1, SIGNAL(clicked()), this, SLOT(show()));
    }
    helpWindow->show();
    helpWindow->raise();
    helpWindow->activateWindow();
}
浪漫是一种天赋。
离线water_wf

只看该作者 11楼 发表于: 2010-12-02
这个问题信号应该不行,同一个线程信号同步,会闪一下。
离线suntianbao
只看该作者 12楼 发表于: 2011-01-12
在初始化  dialog时候 把它的某个信号和 mainwindow的一个槽绑定就行了
其实dialog最好用返回值
离线XChinux

只看该作者 13楼 发表于: 2011-01-12
如果主窗体隐藏掉后什么也不做,那直接用exec()来显示对话框就得了.

void MainWindow::showHelp()
{
    if (!helpWindow){
        helpWindow = new HelpWindow(this);
    }
    hide();
    helpWindow->exec();
   show();
}
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线killerls

只看该作者 14楼 发表于: 2011-01-13
兄弟,你怎么实现的主窗口隐藏阿?不是删除了吧?
如果不是的话,在主窗口建2个槽,一个用来隐藏主窗口,一个用来显示,分别连接到对话框的2个按钮上不行么?
快速回复
限100 字节
 
上一个 下一个