查看完整版本: [-- SLOT(hide())后的窗口如何再显示?(已经解决) --]

QTCN开发网 -> Qt基础编程 -> SLOT(hide())后的窗口如何再显示?(已经解决) [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

herrome 2011-08-08 19:26

SLOT(hide())后的窗口如何再显示?(已经解决)

我的想法是:点击主界面上的一个按键,弹出一个新的DIALOG,同时隐藏主界面。。可是...隐藏后的主界面如何再次显示出来?
PS:我的主界面是一个Dialog

wxj120bw 2011-08-08 20:43
隐藏的主界面 再调出来不就行了吗

roywillow 2011-08-08 21:26
hide()对应的难道不是show()么

herrome 2011-08-09 10:06
这就问怎么调出来....

herrome 2011-08-09 10:10
是show没错,不过我不知道怎么用,我的功能代码都是写在各个类里面的,而主界面的对象是再main.cpp里定义的...

ppdayz 2011-08-09 10:47
代码方便贴出来看下么?不知道你的设计思路

herrome 2011-08-09 11:41
[attachment=6338]
这是我工程里的文件,其中main.cpp:
#include <QtGui/QApplication>
#include <QTextCodec>
#include <QFont>
#include <QString>
#include <QTranslator>
#include "maingui.h"
#include "codeeditgui.h"
int main(int argc, char *argv[])
{
    QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
    QApplication a(argc, argv);
    Maingui w;
    w.showFullScreen();

    return a.exec();
}

主界面是Maingui(Dialog class),我的想法是点击主界面上的某个按键,弹出一个子界面codeeditgui(Mainwindow class),同时隐藏主界面,。
现在的问题是如何把已经隐藏了的主界面再调出来

dbzhang800 2011-08-09 12:19
既然要操作主界面,你就需要主界面对象的指针,至于该指针你准备存在什么地方,就是你自己的选择了。

wxj120bw 2011-08-09 12:21
子界面应该有相应的操作调出隐藏的主界面 利用这个操作通过信号和槽连接主界面,调用show函数

herrome 2011-08-09 13:31
表面上是解决了,我在子界面类里定义里这样一个槽
void CodeeditGUI::PB_Exit_clicked()
{
    Maingui *w = new Maingui;
    w->show();
}
不过这个主界面还是原来的那个马

dbzhang800 2011-08-09 14:16
引用第9楼herrome于2011-08-09 13:31发表的 回 8楼(wxj120bw) 的帖子 :
表面上是解决了,我在子界面类里定义里这样一个槽
void CodeeditGUI::PB_Exit_clicked()
{
    Maingui *w = new Maingui;
    w->show();
.......

显然不是,

另外:记住一点,每一个new都需要有一个对应delete。

wxj120bw 2011-08-09 14:27
新建子界面时,将主界面对象传给子界面,如 new MyDialog(mainDlg) //mainDlg是主界面指针对象
这样在子界面就可以操作主界面对象了。

roywillow 2011-08-09 15:07
看样子你是在主窗口中调用一个弹出窗口
那么就在主窗口中把弹出窗口关闭时发出的信号(我记得好像是reject和accept)跟this的show槽直接连接,这样应该就ok了吧,不要想得太复杂

另外上面给出的那个代码既没有指定parent也没有delete……并且这个窗口跟原来隐藏的显然不是一个东西

herrome 2011-08-09 15:40
accept的话Mainwindow class好像没有吧,

roywillow 2011-08-09 15:52
那个信号是QDialog的
你不是想在弹出窗口关闭的时候弹出主窗口么
那么就把弹出窗口关闭时发出的消息跟主窗口重新显示的槽关联应该就ok了吧

herrome 2011-08-09 15:58
每一个new都需要有一个对应delete
这话怎么解释?子界面关闭的时候不能自动delete马

herrome 2011-08-09 16:05
能否说的具体一点?
我的主界面对象是在main.cpp里声明的阿,其他地发怎么用?

abcdlcq 2011-08-09 17:07
子界面的parent是谁?

dbzhang800 2011-08-09 18:52
引用第16楼herrome于2011-08-09 16:05发表的 回 11楼(wxj120bw) 的帖子 :
能否说的具体一点?
我的主界面对象是在main.cpp里声明的阿,其他地发怎么用?


磨刀不误砍柴工。建议先抽出几周时间,稍微补一点C++ 的基础知识,然后再入手Qt。

jdwx 2011-08-09 19:34
这个简单,子窗口用QDialog,
void mainwindow::XXXX()
{
hide();
QDialog   dlg;
dlg.exec();
show();
}

herrome 2011-08-09 20:16
我的子窗口用的是Mainwindow class,因为要涉及文件编辑功能,没办法

herrome 2011-08-09 20:16
no parent

roywillow 2011-08-09 21:33
那就重载closeEvent,在event里自己emit一个信号……

herrome 2011-08-09 21:48
哦也,我子窗口用的是mainwindow

jdwx 2011-08-09 22:18
XXXXXX()
{
QMainWindow child=new QMainWindow(this);
hide();
child.show();
}
child:
closeevent()
{
parentWidget()->show();
}

abcdlcq 2011-08-10 09:15
deleteLater ()

herrome 2011-08-11 15:15
太给力了   谢谢

shendu 2020-04-06 15:58
支持,顶!

内容来自[手机版]


查看完整版本: [-- SLOT(hide())后的窗口如何再显示?(已经解决) --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled