QT 基本控件、类记录及注意事项

文件相关

一、QFileInfo

QString strPath = "/home/daboluo/Downloads/.王者荣耀.wpt";
QFileInfo file(strPath);

// 包含后缀的文件名
file.fileName()
".王者荣耀.wpt"

// 基本名称是第一个“.”字符之前的字符构成,所以该例子为空
file.baseName()
""
// 完整的基本名称由文件中的所有字符组成,直到(但不包括)最后一个“.”字符
file.completeBaseName()
".王者荣耀"

// 后缀
file.suffix()
"wpt"

// 目录路径
file.path() file.absolutePath() 
"/home/daboluo/Downloads"

// 文件路径
file.filePath() file.absoluteFilePath()
"/home/daboluo/Downloads/.王者荣耀.wpt"

二、QSettings

// 问题:如果以NativeFormat格式打开ini文件
// 在linux和mac平台是没问题的,但是在windows平台读取不到

// 原因:NativeFormat代表使用平台相关的格式
// 在windows下是读取注册表实现数据读取,在linux下是读取文件实现数据读取。linux没有注册表
// 所以如果确定是读取文件,为了跨平台需要设置为QSettings::IniFormat格式。
QSettings settings("/home/guo/test.ini", QSettings::NativeFormat);


控件相关

一、QLineEdit

1、textChanged信号与textEdited信号的区别

textChanged信号触发的两种方式
(1)每当手动输入文本时,就会发出这个信号。
(2)当以编程方式更改文本时,例如,通过调用setText()也会发出此信号。

textEdited信号触发的一种方式
(1)每当手动编辑文本时,就会发出这个信号。
备注:当以编程方式更改文本时,例如,通过调用setText()不会发出此信号。

二、QCheckBox

stateChanged:每当复选框状态改变时,就会发出这个信号。
如果setChecked()后不想发出这个信号,可以断开重新连接。或者调用blockSignals函数

三、QWidget

注意事项
setFixedSize设置后,会执行setMaximumSize和setMinimumSize,此时设置resize将不会改变其大小,除非重新设置最大最小或者固定值。

四、QVariant

从QVariant类型转换为string、stringlist类型要格外注意。

// 假设有一个QStringList类型的对象sl。sl插入一个空string,此时sl.size()的个数为1
QStringList sl;
sl << "";
QVariant v(sl);

// 直接转换为string是有问题的
// 此时v.toString().isEmpty()为真,并且v.toString().size()也为0
v.toString();

// 可以判断其类型,再将其转换
if (v.type() == QVariant::StringList)
	v.toStringList();

// 警告:不能通过canConvert函数判断
// 因为QStringList类型也可以通过QVariant转换为QString类型
if (v.canConvert<QString>())
	v.toString();

五、QPropertyAnimation

注意事项
在arm平台上,或者性能差的机器上,如果使用该动画类进行窗体移动,频繁move,来不及刷新,界面就会出现残影或者卡出界面帧。
解决办法
可以打开电脑的高性能模式,或者去掉该动画。

六、QListView

1、如果遇到插入的item没有hover效果,移动无响应,点击才有响应,有可能是没有开启鼠标跟踪,导致没有触发paint事件。

QListView *pListView = new QListView(this);
pListView->setMouseTracking(true);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值