一、项目介绍
结合SQL数据库、XML以及TableView相关知识,展示汽车制造商与汽车的关系。当在汽车制造商表中选中某个制造商时,下面的汽车表中将显示该车的车型和制造商的详细信息,车型的相关信息存储在XML文件中。
二、项目基本配置
新建一个Qt案例,项目名称为“CarTest”,基类选择“QMainWindow”,点击选中创建UI界面复选框,完成项目创建。
三、UI界面设计
UI界面布局如下:
其中,汽车制造商、汽车和详细信息这三个文字部分是GroupBox创建的,其内部包含的控件如下:
序号 | 名称 | 类型 | 属性 |
---|---|---|---|
① | factoryView | QTableView | EditTriggers:NoEditTriggers SortingEnabled:true SelectionBehavior:SelectRows SelectionMode:SingleSelection ShowGrid:false verticalHeader:false AlternatingRowColors:true |
② | carView | QTableView | EditTriggers:NoEditTriggers SortingEnabled:true SelectionBehavior:SelectRows SelectionMode:SingleSelection ShowGrid:false verticalHeader:false AlternatingRowColors:true |
③ | profileLabel | QLabel | wordwrap:true Alignment:AlignBottom |
④ | titleLabel | QLabel | wordwrap:true Alignment:AlignBottom |
⑤ | attribList | QListWidget | / |
⑥ | 操作菜单 | QMenu | 内含三个子菜单: 添加:addAction 删除:deleteAction 退出:quitAction |
四、连接数据库模块
Add New——>Qt——>Qt设计师界面类——>Dialog without Buttons。
class name设置为:ConnDlg,下一步,确定。
然后在conndlg.ui中设置界面如下:
界面中创建了15个控件,其名称和类型如下:
序号 | 名称 | 类型 | 属性 |
---|---|---|---|
① | label | QLabel | text:驱动: |
② | label_2 | QLabel | text:数据库名: |
③ | label_3 | QLabel | text:用户名: |
④ | label_4 | QLabel | text:密码: |
⑤ | label_5 | QLabel | text:主机名: |
⑥ | label_6 | QLabel | text:端口 |
⑦ | comboDriver | QComboBox | currentText:请选择数据库驱动 |
⑧ | databaseEdit | QLineEdit | / |
⑨ | usernameEdit | QLineEdit | / |
⑩ | passwordEdit | QLineEdit | / |
11 | HostnameEdit | QLineEdit | / |
12 | portspinBox | QSpinBox | / |
13 | label_7 | QLabel | text:状态 |
14 | ok | QPushButton | text:连接 |
15 | cancel | QPushButton | text:退出 |
五、添加记录功能
Add New——>Qt——>Qt设计师界面类——>Dialog without Buttons。
class name设置为:Dialog,下一步,确定。
然后在dialog.ui中设置界面如下:
界面中创建了13个控件,其名称和类型如下:
序号 | 名称 | 类型 | 属性 |
---|---|---|---|
① | label | QLabel | text:制造商: |
② | label_2 | QLabel | text:厂址: |
③ | label_3 | QLabel | text:品牌: |
④ | label_4 | QLabel | text:上市时间: |
⑤ | factoryEditor | QLineEdit | / |
⑥ | addressEditor | QLineEdit | / |
⑦ | carEditor | QLineEdit | / |
⑧ | yearspinBox | QSpinBox | minimum:1900;maximum:2100 |
⑨ | label_5 | QLabel | text:产品属性(由分号;隔开): |
⑩ | attribEditor | QLineEdit | / |
11 | submit | QPushButton | text:提交 |
12 | revert | QPushButton | text:撤销 |
13 | closeButton | QPushButton | text:退出 |
六、完整代码
由于代码复杂度太高,文章内容无法覆盖完全,有需要的可以自行下载:资源
【注意】:Qt文件编译成功后,将文件内的xml文件移动到生成的debug或release目录下即可完美运行。
七、效果演示
完整效果如下: