当前位置: 首页 > article >正文

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);

三、效果展示

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


http://www.kler.cn/news/337438.html

相关文章:

  • ThinkBook 16+ 锐龙6800h 安装ubuntu键盘失灵
  • 下标记数(一)
  • PostgreSQL 任意命令执行漏洞(CVE-2019-9193)
  • 嵌入式硬件设计
  • 解锁手机截屏新姿势,五大技巧让你成为屏幕捕手
  • C语言期中自测试卷
  • 云原生(四十九) | WordPress源码部署
  • 自动驾驶系列—揭秘毫米波雷达:自动驾驶的眼睛如何看穿复杂环境?
  • 深度学习:基于MindSpore实现ResNet50中药分拣
  • 【无人机设计与技术】基于EKF的四旋翼无人机姿态估计matlab仿真
  • 【实战教程】SpringBoot全面指南:快速上手到项目实战(SpringBoot)
  • 【大数据应用开发】2023年全国职业院校技能大赛赛题第02套
  • MySQL进阶学习一(2024.10.07版)
  • 开放式耳机是什么意思?分享几款适合各类运动佩戴的蓝牙耳机
  • javascript中null和undefined的区别
  • 小米路由器ax1500+DDNS+公网IP+花生壳实现远程访问
  • 普通人也能看懂的大语言模型入门,不要错过哦
  • 思科防火墙:ASA中Object-group在ACL中的应用
  • 前端练习小项目 —— 让图片变得更 “色”
  • Redis位图BitMap