Qt5开发及实例——第16章综合实例问题整理(一)

it2022-05-09  25

        由于工作需要,对《Qt5开发及实例》(第3版)进行了一定的学习。

        但是,开发环境不是Qt5的Creater,而是VS2017+Qt5(以下称VQ)的综合开发环境,因此这里需要说明下。在使用VQ进行完成第16章的综合开发实例【汽车销售管理系统】时,有部分需要说明的点,在这里进行了整理,此为第一部分。

1、主菜单的中文无法显示

        只需要在某个头文件中的加入如下代码即可。

#ifdef WIN32 #pragma execution_character_set("utf-8") #endif

        如果还是不行的化就加上"QObject::",即如下代码所示。

manageMenu = menuBar()->addMenu(QObject::tr("销售管理"));

        其它菜单同理加上即可。

2、第16.2.1小节重新修改SQL表值时需要删掉已生成的文件

        在16.2节中会创建厂家表和品牌表,生成解决方案后会在工程目录生成对应的data.db文件,如果你重新修改厂家信息时,执行后结果会发现,显示的的厂家信息比较乱,需要将之前生成的data.db文件删掉,重新生成解决方案后执行即可。而仅仅重新生成解决方案或者清理后重新生成解决方案均无法解决。

//创建厂家表 query.exec("create table factory(id varchar primary key,name varchar)"); query.exec(QString("insert into factory values('0','请选择厂家')")); query.exec(QString("insert into factory values('01','一汽大众')")); query.exec(QString("insert into factory values('02','二汽神龙')")); query.exec(QString("insert into factory values('03','上海大众')"));

3、第16.2.1小节加载某厂家对应品牌的on_sellCancelBtn_clicked接口定义和connect说明

        在16.2节中加载某厂家对应的品牌名,我们发现书中只给定了on_sellFactoryComboBox_currentIndexChanged的定义。这里需要在类的定义中声明,并且声明为槽函数(private slots),并且该函数的定义使用到了另外一个槽函数,void on_sellCancelBtn_clicked();也需要声明和定义。这些书中未写且未说明,但是对应光盘里的源码却是有的。

        另外,上述两个槽函数必须声明为槽函数,如果改为public非槽函数,无法实现本功能。且上述两个槽函数无需调用connect接口进行连接,连接对应的消息,直接声明定义即可。

4、第16.2.1小节加载某品牌的报价和数量

        同样槽函数on_sellBrandComboBox_currentIndexChanged未声明。另外,由于该cpp文件中使用了QMessageBox类,需要加上头文件#include <QMessageBox>。

        显示某一品牌对应的报价和剩余数量,是上一部分“从创建厂家表”中获取的,而不是本部分的代码。

        在创建厂家表和品牌表时,需要使用在manager.Pro中添加以下语句:

QT += sql xml

        而在VQ中,没有Pro文件。这里需要在VS中添加对应的两个模块。具体为,单击Qt VS Tools,然后在弹出的对话框中选择SQL和XML,单击OK即可。

5、第16.2.1小节显示购车总价接口参数arg1和如何在命令行打印

        计算单个品牌不同数量显示总价的代码如下所示。

ui.sellSumLineEdit->setEnabled(true); ui.sellSumLineEdit->setReadOnly(true); qreal sum = arg1 * ui.sellPriceLineEdit->text().toInt(); ui.sellSumLineEdit->setText(QString::number(sum)); ui.sellOkBtn->setEnabled(true);

    可以看出数量就是参数arg1,但我是没看出来是怎么传给这个函数的。通过命令行打印可以看出,操作界面修改数量,确实会实时将数量这个参数传给这个接口。

        这里,如何在命令行打印变量信息说明如下。

        在cpp文件中加入如下三行代码。

#include <iostream> using namespace std; cout << arg1 <<endl;

        并且进行相关设置如下:工程->属性->配置属性->链接器->系统->子系统中将 窗口(/SUBSYSTEM:WINDOW) 改为 控制台(/SUBSYSTEM:CONSOLE)。

6、第16.2.2小节未指明头文件名称

        在connection.h和widget.h两个头文件中添加包含文件——#include "qdom.h"。


最新回复(0)