自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 笔记:《编写高质量代码改善C++程序的150个建议》

读书记笔记

2022-12-17 16:00:17 353 1

原创 Qt QTextEdit行高和背景色设置

QTextEdit设置行高方法:获得QTextEdit的QTextCursor(光标),给光标设置一个指定行高的段落格式,再讲该光标设置给QTextEdit。//获得eidt光标QTextCursor cursor = edit->textCursor();//为光标指定一个行高为20的段落格式QTextBlockFormat block_format;block_format.setLineHeight(20, QTextBlockFormat::FixedHeight);curso

2021-11-15 19:44:50 5104 1

原创 git版本控制管理

Git保存作者名称和邮箱git config user.name “zhang"git config user.email "[email protected]"也可以使用GIT_AUTHOR_NAME和GIT_AUTHOR_EMAIL环境变量来告诉git你的信息,这些变量一旦设置就会覆盖所有配置设置。创建初始版本库git init将file添加到版本库git add [file]将当前目录以及所有子目录添加到版本库git add .查看版本库状态git status提交更改

2021-11-10 21:44:06 474

原创 mac/win的Qt::ControlModifier以及如何输出mac平台的修饰符符号?

在Qt中,mac和win的Qt::ControlModifier的区别Note: On macOS, the ControlModifier value corresponds tothe Command keys on the keyboard, and the MetaModifiervalue corresponds to the Control keys. 在win中Qt::ControlModifier对应Ctrl键。但是在mac中Qt::ControlModifier对应的是comma

2021-11-10 20:51:53 510

原创 qmake pro文件常用配置

学习记录:关于qmake和编写.pro文件使用#注释#注释工程中使用其他库需要在pro文件指定,使得qmake找到库路径和相应需要连接的库:LIBS += -L库路径1 -l库名称1-L库路径2 -l库名称2LIBS += -L/user/local/lib -lmath#debug版本引入的lib文件路径Debug:LIBS += -L/user/local/lib -lmath1#release版本引入的lib文件路径Release:LIBS += -L/user/l.

2021-11-06 00:49:48 1023

原创 Qt日常工作问题点记录3

问题记录41、Qt 在模态窗口中弹出父对象为其他控件的控件 时遇到的问题。41、Qt 在模态窗口中弹出父对象为其他控件的控件 时遇到的问题。Qt 在模态窗口中弹出父对象为其他控件的控件 时遇到的问题。....

2021-07-27 19:48:46 88

原创 Qt 在模态窗口中弹出父对象为其他控件的控件 时遇到的问题。

问题描述:如下图所示:在A窗口上弹出模态窗口B,然后在模态窗口B上弹出C窗口,且C的父对象为A。遇到的问题是:如果将C窗口show出来,马上就会隐藏掉。如果将C窗口exec出来,C窗口的enter和leave事件的接收会有问题。解决方案:临时改变C窗口的父对象为B并show出来,隐藏C窗口之前再将父对象设置为A。...

2021-07-27 19:45:44 196

原创 Qt QListWidget通过insertItem插入Item总是在最后一行的解决方案。

问题:使用QListWidget通过insertItem去插入item,发现不起作用,总是在最后一行。解决方案:最后发现是构造QListWidgetItem的问题,只要构造Item时指定父对象为该QListWidget,insertItem无效。只有不指定父对象是insertItem才起作用。...

2021-07-26 13:10:26 1198 1

原创 QListView或QListWidget一直显示代理控件。

问题QListView或者QlistWidget通过委托代理delegate实现自定义控件之后,只有双击进入编辑状态,才能显示自定义控件。但是我的需求是在列表中有且只有一个自定义控件一直显示。解决方案通过QAbstractView的setItemWidget为Item设置自义定控件。 但是这种方案不适合我,因为我用的view、model,不想再重写了。通过QAbstractItemView::openPersistentEditor(const QModelIndex &index)方法

2021-07-12 20:02:43 1072

原创 Qt QComboBox下拉菜单背景透明

下拉菜单四个角是圆角,但是背景不透明,给QComboBox包括他的QAbstractItemView设置了qss,不起作用,如下图所示。而且这个QAbstractItemView的背景颜色是和上面的QComboBox设置的背景颜色一样的。解决方案: ui->btn_combox_proxy_type->view()->parentWidget()->setWindowFlags(Qt::Popup | Qt::FramelessWindowHint); ui->btn

2021-06-29 09:48:08 3312

原创 Qt 在不同DPI下使用Layout布局,使得布局和位置保持一致

问题最近在调整界面样式。一开始是在DPI为100的显示器上调整的,调整完毕之后,发现在DPI设置为150的显示器上部分控件位置不正确。(绝对定位的位置都OK,但是使用Layout布局的部分控件位置有偏差。)解决方案layout的setMargin和setSpacing都设置为0,通过layout的setContentsMargins控制上下左右的间距,通过addSpacing控制控件之间的间距。...

2021-06-23 10:26:06 343

原创 Qt setMargin和setContentsMargins

一直以为layout的setMargin和setContentsMargins的影响范围是这样(如下图),并且是各自影响各自。直至有一次发现setMargin和setContentsMargins的顺序不同导致了不同的结果,才知道两个有可能会互相影响的。比如:如果先设置了setContentsMargins(20,0,0,0),再设置setMargin(0),那么前者无效,只有把顺序颠倒setContentsMargins才能生效。...

2021-06-21 00:17:13 4359 2

原创 Qt QListView横向流式布局:根据宽度自动换行并根据内容自动调整高度

目录效果图QListView实现横向流式布局的三句核心代码:效果图QListView实现横向流式布局的三句核心代码:setViewMode(QListView::IconMode); setFlow(QListView::LeftToRight); setResizeMode(QListView::Adjust); 给QListView设置了一个背景色,model用的QStandartItemModel,自己写了一个委托,委托里面就两个函数:paint和sizeHint。

2021-06-20 13:44:08 5072

原创 Qt 使用资源管理器打开文件夹,并定位到指定文件。

目录问题描述解决方案问题描述 之前使用qt在资源管理器打开某路径,方法如下: QUrl _url = QUrl::fromLocalFile(path); QDesktopServices::openUrl(_url); 上述方法有弊端,比如要查看文件夹A下面的B文件,上述方法可以打开A文件夹,但是如果A文件夹中的内容比较多,B文件在下面,还需要自己查找B文件的位置。 解决方案 const QString explorer = "explorer"; QStringList param;

2021-05-22 23:00:09 4891 6

原创 Qt 自定义数据结构,重写QTreeView和QAbstractItemModel。

目录前言效果TreeItem:树的数据结构CModel:继承QAbstractItemModelCTreeView:继承QTreeView记录一些点:前言  一直以来都知道view/model,平时工作也在用,但很多点都很模糊,所以从头写一遍。效果TreeItem:树的数据结构 数据结构类比较重要的是信息(属性),和对信息的获取、变更的方法。根据自己的需要去定义数据结构即可。 这里需要实现树结构,所有每个节点的信息有:父节点、子节点列表、信息。TreeItem.h#pragma once

2021-05-22 21:46:44 3850 7

原创 Qt 打开资源管理器并定位到指定文件。

以前打开资源管理器都是通过:QDesktopServices::openUr但是只能打开文件所在的文件夹,如果这个文件所在的文件夹中有很多文件,需要自己找到需要的文件。为了打开资源管理器便能方便的选中到该文件:void Utils:openPath(const QString &pathIn){ const QString explorer = "explorer"; QStringList param; if(!QFileInfo(pathIn).isDir) param&l

2021-05-12 19:07:14 1193

原创 Qt QTextEdit固定宽度,高度随内容变化而变化,不会出现滚动条。

项目需求自定义控件:一个宽度固定,高度根据内容自适应的文本编辑框。效果如下图所示:之前尝试了一些其他方法,效果并不理想,比如:根据edit的滚动条的当前位置和最大值的差值,重新设置edit的高度,达到滚动条消失,高度自适应的效果。  最终解决方案:通过根据内容重新调整edit中document的大小,设置edit的高度,不需要进行数值计算了。  核心代码: //之前的Edit高度 int oldHeight = textEdit->height(); //调整文字高度并设置

2021-04-26 23:13:47 4588

原创 Qt QHBoxLayout或QVBoxLayout布局中,控件重叠问题。

目录问题描述问题原因解决方案问题描述起因: 项目某页面的布局,之前都是用绝对位置去布局的。后来需求各控件的位置需要随着某一控件的隐藏和显示去变化,这就很不方便,需要各种根据高度和显示状态去计算控件坐标并更新。 随着需求的增加,绝对位置已经满足不了各种能够变化,问题频出。 所以需要layout作为容器,容纳控件,以适应各控件的位置动态变化。-问题如下图所示:控件2高度变化之后竟然和其他控件重叠了。造成了很大的困扰。问题原因简而言之,言而简之,我的layout所在主窗口的大小是固定不

2021-04-26 23:00:15 4688 2

原创 Qt问题:QDilog按下回车键竟然关闭了,想屏蔽Return键结果和Enter键弄反了,最后还接收不到Return的键盘事件了,气人不

问题描述:1、程序的QDialog窗口按下回车竟然关闭了,感觉跟奇怪,不知道为什么。2、最后想要通过重写QDialog的keyPressEvent屏蔽调回车键,结果Return和Enter傻傻分不清楚。3、Return和Enter搞清楚了之后发现键盘事件竟然接收不到回车键。这就一个问题引出来另外两个问题了,最后才傻傻的搞清楚。  解释(让我们倒着解释): 关于问题3的解释:因为QDialog中存在控件的focusPolicy是Qt::StrongFocus,不光导致QDialog的键盘事

2021-04-22 15:22:47 3375 2

原创 Qt 开机自启动并最小化到后台(通过启动时传入的参数判断是否是开机自启动)

分3步走1、开机自启2、判断参数是否要最小化3、凑个第三步:结束。1、开机自启开机自启动使用Qt的QSettings写注册表:#define AUTO_RUN "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run"//参数1:注册表位置//参数2:NativeFormat(注册表模式);IniFormat(ini文件模式)QSettings *settings = new QSettings(AUTO_RUN

2021-04-19 20:54:25 1610

原创 Qt MouseMoveEvent函数中一直判断不了左键移动事件的可能原因。

mousePressEvent和mouseMoveEvent判断【鼠标按下事件】的区别:如果是MousePressEvent判断按下是这样去判断:void XXX::mousePressEvent(QMouseEvent *event){ //鼠标左键按下 if(event->button() == Qt::LeftButton) { //todo } return QWidget::mousePressEvent(event);}

2021-04-09 17:02:52 614

原创 Qt日常工作问题点记录2

问题记录21、QProcess启动外部程序时,如果路径有空格,启动失败的问题。21、QProcess启动外部程序时,如果路径有空格,启动失败的问题。从网上看到的一个简单又猥琐的办法://先把程序运行目录设置到【要运行的程序所在的目录】QDir::setCurrent(【要运行的程序所在的目录】);//启动外部程序时,只使用外部程序的名称,不用带路径QProcess *process = new QProcess(this);bool ret = process->startDetach

2021-03-31 23:59:06 230

原创 Windows 访问 centOS samba配置的共享文件夹

1 下载sambayum install samba -y2 配置smb.conf打开cmb.conf文件:vim /etc/smb.conf在文件的最后加入:[code] path = /home/henry/gitCode writable = yes browseable = yes guest ok = yes配置samba账号密码[root@localhost ~]# useradd sambauser[roo

2021-03-27 11:05:11 567

原创 Qt日常工作问题点记录1(至2021.03.31)

问题记录前言1、QWidget的子类作为其他窗口的子对象时设置qss不生效问题。前言把工作中遇到的小点记一下。1、QWidget的子类作为其他窗口的子对象时设置qss不生效问题。需要再QWidget子类重写paintEvent函数,加如下代码:void CustomWidget::paintEvent(QPaintEvent *event){ Q_UNUSED(event); QStyleOption opt; opt.init(this); QPainter p(this); s

2021-02-03 11:39:30 312 2

原创 六个基础排序算法(选择、冒泡、插入、希尔、归并、快速)

文章目录写基础排序算法的原因说明一选择排序冒泡排序插入排序写基础排序算法的原因 一是因为这是基础,然后再就是我有时候闲的没事会默想,然后就有的细节不确定了,我又是一个比较追求完美的人,我就又会去看。然后过一段时间有的细节又记不住了,周而复始。思路当然晓得,但是不能一次把细节都想对,就感觉很不完美。 所以我要写在我的博客上面,顺便把经常记不住的“不完美”细节标注(就直接标注成注释了)一下。说明以从小到大排序为例。基础的交换操作被这几个算法都调用了,代码如下://基础交换操作void exc

2020-08-11 21:21:22 472

原创 通过Qt状态机框架、设计模式(状态模式)实现状态转换

文章目录起因示例说明方法一:简单利用Qt中的状态机框架方法二:状态模式起因 那天下班吃完饭回宿舍,发现项目组长(住我隔壁屋)在打电话。我一开始没有在意,进屋收拾东西,谁知道面试完了之后组长喊了我一声,说刚电话面试完一个求职者,巴啦啦说了一堆,意思就是想考考我。 题目就是关于录音机各个按键切换,关于这个情景有什么想法。 说实话,我并没有一开始想到状态机,最后组长提醒我这算是很经典的状态机应用场景。然后我就开始思考,然后学习了一番。示例说明 试下类似如下图效果: 简单实现了播放、暂停和关闭三种状态

2020-08-09 18:26:16 2493 1

原创 git/github笔记(边用边学边更)

2020-07-27 23:26:35 96

原创 Qt与Excel交互

写在前面 之前对与Qt和Excel、Word的交互不太了解,知道有这么回事,但是具体怎么写和涉及到那些类不太清楚。 结果工作中要用到,因为不太熟悉这方面,所以被另外一个“同事”接下了客户发布的“赏金任务”,感到遗憾,失去了一个在工作中锻炼自己和表现自己的机会。 不过没关系,自己看看和了解一下基本操作还是可以滴。Qt与Excel交互主要用到QAxObject类,所有Excel中的对象(excel,workbook,sheet,cell等等)和Word中的对象(word,document,sele

2020-07-14 22:52:29 670

原创 QT库对国际化的支持:语言翻译。

QT库对国际化的支持:语言翻译。主要利用Qt提供的lupdate、linguist、和lrelease工具。这些工具在Qt安装目录里有。主要步骤:修改工程的.pro文件,添加如下代码:TRANSLATIONS = XXXX.ts。然后编译,一定要编译。代码示例:TRANSLATIONS = InternationalDemo.ts打开Qt x.xx.xx for Desktop(MinGW x.x.x 32bit),首先进入工程目录下,然后执行命令:lupdate XXX.pro。上述

2020-07-14 21:36:25 235

CustomTreeViewDemo.rar

CustomTreeViewDemo.rar

2021-09-26

QListViewFlowDemo.rar

Qt QListView横向流式布局:根据宽度自动换行并根据内容自动调整高度。

2021-06-20

StateMachineDemo.rar

博客中的示例,为了方便看,上传成资源。

2020-08-03

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除