以前我看的qt书是《C++ GUI Qt4编程》,可是看第四章后就卡住了,一直也没怎么看
后来找到了《24小时学会qt编程》,感觉很对我的口味,只可惜是qt2的版本,很多代码
都编译不过,于是又舍弃了。现在用qt做嵌入式开发,那就顺便把qt再学一遍。
需求如下:
有一个主窗口,上面有五个按钮分别对应五个不同的功能,点击一个按钮便把主
窗口影藏,并显示按钮对应的子窗口。 单击子窗口的关闭按钮时,把子窗口关闭,并
显示主窗口。
网上对这种的方式的实现都比较复杂,我主要是把父窗口指针传给了子窗口,也不知到对否,
望高手指点。
示例如下:
//父窗口类 class Mw:public QMainWindow{ ..... void on_clicked() //槽,比如点击一个按钮显示子窗口 { sw =new Sw(this); //这里把父窗口传给子窗口 sw->show(); this->hide(); } ..... Sw* sw; //子窗口变量 } //子窗口类 class Sw:public QMainWindow{ Sw(QWidget *parent = 0) { this->setAttribute(Qt::WA_QuitOnClose,false);//设置子窗口点击“x”不关闭 this->parent=parent; } //重载关闭事件 void closeEvent(QCloseEvent *) { this->parent->show(); //显示父窗口
//this->~Sw();//显式调用析构函数
} ..... ..... QWidget* parent;//保存父窗口 }
这样就可以实现多窗口的切换了,不过子窗口应该没有关闭,也可以在关闭事件里显式调用
析构函数,这样应该销毁子窗口的内存了,可是c++里不提倡这么用。