Qt 多窗口的调用

时间:2025-01-23 07:35:31

方法一:(用于一个父窗口和多个子窗口的处理,不知道怎么用于处理子窗口的子窗口的处理)

1、建立一个父窗口,然后建立一个QDialog类型的窗口作为子窗口

2、在父类窗口建立子窗口的对象

	void 父类名::on_pushButton_clicked()
	{
    		this->hide();
    		子类对象->show();    
   		子类对象->exec();                      //当子类对象窗口关闭或隐藏时,执行下面语句
    		this->show();                            
	}

方法二:(使用connect,可用于父窗口与子窗口还有子窗口的子窗口间的调用,但用于一个父窗口和多个子窗口时,会使代码质量大大降低,复杂化)

建立一个父窗口,然后建立一个QDialog类型的窗口作为子窗口      

父窗口.h文件
	   children_win *cwin = new children_win();
           private slots:
                           void on_pushButton_clicked();           
                            void re_show_pwin();     
父窗口.cpp文件 
			parent_win::parent_win(QWidget *parent) :
   			 	QMainWindow(parent),
   			 	ui(new Ui::parent_win)
			{
   				 ui->setupUi(this);
    				connect(cwin,SIGNAL(send_cwin()),this,SLOT(re_show_pwin()));      //子类对象发送send_cwin()信号给父类,调用re_show_pwin()
			}
			void parent_win::on_pushButton_clicked()
			{
    				this->hide();
    				cwin->show();
			}
			void parent_win::re_show_pwin()
			{
   			 	this->show();
			}
子窗口.h
              signals:
    			void send_cwin();
子窗口.cpp       
			void children_win::on_pushButton_clicked()
			{
    				this->hide();
    				emit send_cwin();
			}

方法三:(比较好用)

建立一个父窗口,然后建立一个QDialog类的子窗口

父窗口.cpp
		#include ""
 
		void parent_win::on_pushButton_clicked()
		{
    			this->hide();
    			zi *z = new zi(this);          //this一定要加上,否则子窗口对象无法指向父类窗口
    			z->show();
		}
 
子窗口.h  
		#include ""
                         fu *f;
 
子窗口.cpp
		zi::zi(QWidget *parent) :
    		    QMainWindow(parent),
    		    ui(new Ui::zi)
		{
   			 f = (fu*) parent;               //fu指针指向父类窗口
    			ui->setupUi(this);
		}