QT5 在mainwindows窗口下点击按钮弹出新窗口,希望在窗口中点击按钮关闭弹窗,但是直接用槽失败了。
如题,本着学习的态度,使用纯代码,没有使用ui界面来进行操作。先在创建的mainwindow界面通过一个button的槽new了一个弹窗(discoverDialog),...
如题,本着学习的态度,使用纯代码,没有使用ui界面来进行操作。
先在创建的mainwindow界面通过一个button的槽new了一个弹窗(discoverDialog),然后在弹窗中创建了一个取消按钮想要关闭弹窗(bt2).
我直接在.cpp的构造函数中创建connect(bt2,SIGNAL(clicked()),discoverDialog,SLOT(close()));
因为close和clicked都是通用的,所以这么做应该是ok的吧??
其次,我也试过创建SLOT函数,但是两种做法,结果都是无法通过点击bt2按钮关闭弹窗。
请各路大神指教指教。是不是因为通过按钮激活的弹窗,所以信号这么直接传传不出来啊?要怎么做才能搞定?
弹窗是在按钮的槽函数里new出来的。 展开
先在创建的mainwindow界面通过一个button的槽new了一个弹窗(discoverDialog),然后在弹窗中创建了一个取消按钮想要关闭弹窗(bt2).
我直接在.cpp的构造函数中创建connect(bt2,SIGNAL(clicked()),discoverDialog,SLOT(close()));
因为close和clicked都是通用的,所以这么做应该是ok的吧??
其次,我也试过创建SLOT函数,但是两种做法,结果都是无法通过点击bt2按钮关闭弹窗。
请各路大神指教指教。是不是因为通过按钮激活的弹窗,所以信号这么直接传传不出来啊?要怎么做才能搞定?
弹窗是在按钮的槽函数里new出来的。 展开
3个回答
推荐于2017-11-22
展开全部
这句是你的问题吧
希望在窗口中点击按钮关闭弹窗,但是直接用槽失败了
那你贴的代码明显不是关闭窗口的,麻烦吧你的关键代码贴出来。
希望在窗口中点击按钮关闭弹窗,但是直接用槽失败了
那你贴的代码明显不是关闭窗口的,麻烦吧你的关键代码贴出来。
追问
追答
我测试了下,没问题,你是要这种效果吧
代码:
#include "widget.h"
#include "ui_widget.h"
#include <QDialog>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{
dlg = new QDialog(this);
QPushButton * btn = new QPushButton("clicked", dlg);
connect(btn, SIGNAL(clicked(bool)), this, SLOT(on_pushButton_clicked2()));
dlg->setModal(true);
dlg->show();
}
void Widget::on_pushButton_clicked2()
{
dlg->close();
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询