VS对Qt实现控件提升,并解决头文件Include方式不正确的问题

一、前言

        VS编写Qt代码时,使用Ui设计师界面,并提升部分自定义的控件后,会报错找不到头文件,原因在于 UIC编译生成.h文件时,引用头文件使用的#include<xxx.h> 而非 #include “xxx.h”。必须手动修改。

        但是每次保存Ui文件,或者整体重新编译后都要手动修改,非常的麻烦,所以经过探索总结了一个方法去解决此问题。

二、解决思路

        首先说明一个问题,为什么使用UI设计师界面,不直接手撸代码生成界面:目的在于快速生成界面,以及可视化后做出布局调整,效率很高。

        所以为了保留原始的Ui布局,我们要做的就是手动将实例化的自定义控件添加到布局中,并移除原始的控件。注意是插入,然后在移除想要替换的控件

下面的代码中:

TGraphicsView:自定义控件,需要插入到界面中

ui->graphicsView:在Ui设计师界面里,用来查看布局效果的原始控件,需要被替换

方式:查看ui.h的头文件,找到布局对象。然后在调用函数内重新编写部分代码,使用布局对象找到graphicsView的位置索引,使用insertWidget将TGraphicsView实例化的控件插入即可。

	graphicsView_Ui = new TGraphicsView(this);
	int index=ui->horizontalLayout_2->indexOf(ui->graphicsView);
	ui->horizontalLayout_2->insertWidget(index, graphicsView_Ui);
	ui->horizontalLayout_2->removeWidget(ui->graphicsView);
	ui->graphicsView->deleteLater();
	ui->horizontalLayout_2->setStretch(0, 3);
	ui->horizontalLayout_2->setStretch(1, 1);

	lab_Image1 = new TQLabel(this);
	lab_Image2 = new TQLabel(this);
	lab_Image3 = new TQLabel(this);

	index = ui->verticalLayout->indexOf(ui->lab_Image1);
	ui->verticalLayout->insertWidget(index, lab_Image3);
	ui->verticalLayout->insertWidget(index, lab_Image2);
	ui->verticalLayout->insertWidget(index, lab_Image1);
	ui->horizontalLayout_2->removeWidget(ui->lab_Image1);
	ui->horizontalLayout_2->removeWidget(ui->lab_Image2);
	ui->horizontalLayout_2->removeWidget(ui->lab_Image3);
	ui->lab_Image1->deleteLater();
	ui->lab_Image2->deleteLater();
	ui->lab_Image3->deleteLater();
	ui->verticalLayout->setStretch(0, 1);
	ui->verticalLayout->setStretch(1, 2);
	ui->verticalLayout->setStretch(2, 2);
	ui->verticalLayout->setStretch(3, 2);

三、效果展示

        图片展示区里面的控件使用此方法加入到界面中的,有放大和缩小的效果,反复编译也不需要修改头文件了,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值