main函数:
#include "mainwindow.h" //主界面类
#include <QApplication> //应用底层
int main(int argc, char *argv[]) //程序入口
{
QApplication a(argc, argv); //启动一个应用 a
MainWindow w; //创建主窗口 此时默认调用构造函数
w.show();//显示主窗口
return a.exec(); //关闭 a
}
主窗口类
#include "mainwindow.h" //自定义类
#include "ui_mainwindow.h" //Qt库
#include "tedialog.h" //自定义对话框
MainWindow::MainWindow(QWidget *parent) : //子类构造函数
QMainWindow(parent),//父类构造函数
ui(new Ui::MainWindow)
// 等价于 ui = new Ui::MianWindow(); 可写到大括号内部去
//ui 在 mainwindow.h 中定义
//private:
//Ui::MainWindow *ui;
//TeDialog *aDialog;
//Ui::MianWindow(); 为命名空间+类名的写法;
//命名空间在 mainwindow.h 中定义
// namespace Ui {
//class MainWindow;
//}
{
ui->setupUi(this);
//setupUi(this)是由.ui文件生成的类的构造函数,
//把我们在Qt设计器里面定义的信号和槽建立起来。
//也可以说,setupUi是我们画界面和写程序之间的桥梁。
}
MainWindow::~MainWindow()
{
delete ui; //释放 ui 指向的界面缓存,避免内存泄漏
//此处涉及到内存处理机制 ui在.h文件中定义,此时在栈中分配一个指针, ui(new Ui::MainWindow) 调用时分配内存
//在窗口析构时,释放掉窗口建立时分配的存储空间
}
void MainWindow::on_pushButton_clicked()
{
aDialog = new TeDialog();//创建一个新的对话框
aDialog->setModal(false);
//非模态对话框,子窗口打开后父窗口可继续操作
//模态则等到子窗口关闭后方能操作父窗口
aDialog->show();//显示
}