QT项目的构成及原理
将项目切换到编辑模式,如下:
这个项目中一共有4个文件,入口文件main.cpp、mainwindow.ui文件、mainwindow.h和mainwindow.cpp后台源文件,在main函数中直接调用MainWindow类的show()方法显示主界面,那么我们切换到UI的设计视图(双击项目中的mainwindow.ui文件),在主界面上添加两个控件:
我们看一下MainWindow.cpp的代码里面应该如何操作界面上的控件:
我们使用的是ui->txtName->text();
这样的语句,也就是说并不是像在C#中一样在后台代码中直接可以通过类似this->txtName->text()
的语句去访问界面上的控件对象,而MainWindow
类中有一个成员变量是ui,其类型是Ui::MainWindow
,通过这个ui成员去访问界面上的元素,那么这些界面控件是如何初始化的呢? 我们需要查看ui成员变量的类型Ui::MainWindow
的实现,注意Ui::Mainwindow
类与MainWindow
类是不同的两个类,Ui::MainWindow
类是在命名空间Ui下的类,而MainWindow
是没有命名空间的,我们在mainwindow.h中可以看到:
MainWindow中的私有成员变量ui实际上是Ui::MainWindow
类型的指针,那么Ui::MainWindow
是如何定义的呢? 用鼠标点进去就看到了:
从这里就可以看出为什么我们的MainWindow类的构造函数中一进来就调用ui->setupUi(this)
去初始化界面了