找回密码
 立即注册
收起左侧

求解QT界面问题

6
回复
8145
查看
[复制链接]
累计签到:8 天
连续签到:1 天
来源: 2013-10-4 18:33:09 显示全部楼层 |阅读模式
1Qter豆
我在主窗口点击一个按钮,打开了一个子窗口,点击子窗口的取消,要怎么做,才能关闭字窗口,回到主窗口呢?

最佳答案

查看完整内容

void Dialog::show_cancle() { close(); } 你这里调用的close()是Dialog的成员,所以关闭的是Dialog啊。 这里你在函数里面创建的findDlg,不能这样关闭的,可以在关联的时候关闭: connect(cancle,SIGNAL(clicked()), findDlg , SLOT(close()));
回复

使用道具 举报

累计签到:1569 天
连续签到:1 天
2013-10-4 18:33:10 显示全部楼层
流浪歌手 发表于 2013-10-4 21:41
显示子界面时,主界面也显示
这是我在程序中写的
void Dialog::n_pushButton_6_clicked()

void Dialog::show_cancle()
{
       close();
}

你这里调用的close()是Dialog的成员,所以关闭的是Dialog啊。

这里你在函数里面创建的findDlg,不能这样关闭的,可以在关联的时候关闭:


connect(cancle,SIGNAL(clicked()), findDlg , SLOT(close()));
参与人数 1人气 +1 收起 理由
camelback5 + 1 简单的问题,正确的答案,只是不知楼主还不.

查看全部评分总评分 : 人气 +1

回复

使用道具 举报

累计签到:1569 天
连续签到:1 天
2013-10-4 20:54:02 显示全部楼层
子窗口执行close();
回复

使用道具 举报

累计签到:8 天
连续签到:1 天
2013-10-4 20:59:04 显示全部楼层
本帖最后由 流浪歌手 于 2013-10-4 21:01 编辑

不行啊!主窗口也直接关了
我是在主窗口直接用代码生成的子窗口
回复

使用道具 举报

累计签到:8 天
连续签到:1 天
2013-10-4 21:01:01 显示全部楼层
yafeilinux 发表于 2013-10-4 20:54
子窗口执行close();

不行阿!我开始是这样设计的, 一关就都关了! 子窗口是在主窗口直接用代码生成的
回复

使用道具 举报

累计签到:1569 天
连续签到:1 天
2013-10-4 21:04:15 显示全部楼层
流浪歌手 发表于 2013-10-4 21:01
不行阿!我开始是这样设计的, 一关就都关了! 子窗口是在主窗口直接用代码生成的 ...

你显示子界面的时候,主界面还显示吗?

可以先show()主界面,然后再close()子界面。

这个需要看你是怎么实现的。出现你说的问题的原因是,Qt不可以隐藏所有的界面,如果没有了可以显示的界面,那么程序就关闭了。
回复

使用道具 举报

累计签到:8 天
连续签到:1 天
2013-10-4 21:41:36 显示全部楼层
本帖最后由 流浪歌手 于 2013-10-4 21:49 编辑
yafeilinux 发表于 2013-10-4 21:04
你显示子界面的时候,主界面还显示吗?

可以先show()主界面,然后再close()子界面。

显示子界面时,主界面也显示
这是我在程序中写的
void Dialog::n_pushButton_6_clicked()
{
    QDialog *findDlg = new QDialog(this);       //新建一个对话框,用于查找,this表示它的父窗口是QDialog
    findDlg->setWindowTitle(tr("查找"));      //设置对话框标题
    find_textLineEdit = new QLineEdit(findDlg);     //将行编辑器加入到新建的查找对话框中
    QPushButton *find = new QPushButton(tr("确定"), findDlg);
    QPushButton *cancle = new QPushButton(tr("取消"), findDlg);
    QVBoxLayout *layout = new QVBoxLayout(findDlg);
    layout->addWidget(find_textLineEdit);
    layout->addWidget(find);
    layout->addWidget(cancle);
    findDlg->show();        //显示对话框
    connect(find, SIGNAL(clicked()), this, SLOT(show_findText()));
    connect(cancle,SIGNAL(clicked()), this , SLOT(show_cancle()));


}
void Dialog::show_cancle()
{
       close();
}
点击取消主窗口就关闭了,不知道问题出在哪里
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了