版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33308135/article/details/82897913
方法一:利用指针
//Dialog.cpp
#include <MainWindow.h>
void Dialog::on_pushButton_clicked()
{
MainWindow *m = new MainWindow(this);
m->show();
this->hide();
}
//MainWindow.cpp
#include <Dialog.h>
void MainWindow::on_pushButton_clicked()
{
Dialog *d = new Dialog(this);
d->show();
d->exec();
this->hide();
}
运行此程序,首先进入的是MainWindow界面,点击pushButton,MainWindow界面消失,打开Dialog,此时尚且正常,值得一提的是,再点击Dialog界面的pushButton,切回MainWindow界面时,任务栏会失去该程序,如图所示,初步判断原因是exec(),但是由于MainWindow没有exec(),所以Tinkle尚未找到解决方法,因此不建议采用,接着请看方法二
方法二:使用信号与槽
//main.cpp
#include <Dialog.h>
#include <MainWindow.h>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
Dialog d;
w.show();
d.hide();
QObject::connect(&d,SIGNAL(showwnd()),&w,SLOT(getshowwnd()));
QObject::connect(&w,SIGNAL(showdlg()),&d,SLOT(getshowdlg()));
return a.exec();
}
void Dialog::getshowdlg()
{
this->show();
}
void Dialog::on_pushButton_clicked()
{
this->hide();
emit showwnd();
}
signals:
showwnd();
private slots:
void getshowdlg();
void on_pushButton_clicked();
void MainWindow::on_pushButton_clicked()
{
this->hide();
emit showdlg();
}
void MainWindow::getshowwnd()
{
this->show();
}
signals:
showdlg();
private slots:
void on_pushButton_clicked();
void getshowwnd();