在窗口A打开窗口B(窗口A不关),等窗口B关闭的时候。。。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在窗口A打开窗口B(窗口A不关),等窗口B关闭的时候。。。相关的知识,希望对你有一定的参考价值。
,等窗口B关闭的时候。,怎么实现啊,要往窗口A的TextBox控件里面 写“窗口B关闭”在窗口A打开窗口B(窗口A不关) 不好Activated事件 每次加载窗体都发生,即使不关闭B窗口,最小化一下也提示
参考技术A 点击按钮a,打开窗口b可以按照以下步骤进行点击a之后,直接调用
b.show()(前提是b窗口已经被生成);
然后设置b窗口为模态,如下
b.setwindowmodality(qt::windowmodal);
详见qt帮助文档。
QT实现窗口缩放打开与关闭(重叠窗口,太有意思了)
基本思想:假设A为主窗口,B为子窗口。A打开或关闭时,先对A窗口进行截图,然后将图片部满整个B窗口的,在paintEvent里面进行动态缩放或放大画图。最后使用动画,将B窗口以动画的形式打开或关闭,动画播放完毕后,B发送一个信号给A,B关闭,A显示出来。
核心代码发下:
在A窗口里:
QPixmap pixmap;
CTestDialog dlg(this);
dlg.SetPixmap(pixmap.grabWidget(this));
hide();
dlg.exec();
B窗口:
CTestDialog::CTestDialog(QWidget *pParent) : QDialog(pParent)
{
ui.setupUi(this);
setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint);
}
CTestDialog::~CTestDialog()
{
}
void CTestDialog::SetPixmap(const QPixmap &pixmap)
{
m_backPixmap = pixmap;
m_image = pixmap.toImage();
update();
QDesktopWidget *desktopWidget = QApplication::desktop();
QRect screenRect = desktopWidget->screenGeometry();
QPropertyAnimation *animation = new QPropertyAnimation(this, "geometry");
animation->setDuration(2200);
animation->setEasingCurve(QEasingCurve::OutBounce);
animation->setStartValue(QRect((screenRect.width() - 50) / 2, (screenRect.height() - 50) / 2, 50, 50));
animation->setEndValue(QRect((screenRect.width() - 500) / 2, (screenRect.height() - 400) / 2, 500, 400));
animation->start();
}
void CTestDialog::paintEvent(QPaintEvent *p)
{
QPalette pal(palette());
pal.setBrush(QPalette::Window, QBrush(m_image.scaled(this->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)));
setPalette(pal);
}
以上是关于在窗口A打开窗口B(窗口A不关),等窗口B关闭的时候。。。的主要内容,如果未能解决你的问题,请参考以下文章
window.open()方法用于子窗口数据回调至父窗口,即子窗口操作父窗口