文章目录
文件相关
一、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);