QT开发

1. QT编译后在windows下缺少QtCore5.dll

解决办法:

找到Qt的安装目录,主要是bin文件 添加到Windows的系统变量中

 

QT需要静态编译

 

2. Windows上出现 qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed

解决办法:

确定工程是32位还是64位, 下载openssl ,  下载地址:

https://slproweb.com/products/Win32OpenSSL.html

下载的文件为 Win64 OpenSSL v1.1.1h Light Ligth版本即可

 

下载完装后,将以下两个文件复制到QT.dll目录(QT Creator运行的时候使用)和release目录(release打包版本的时候用)

WX20201125 162648 2x

 

3. 解决Windows下面打包后 无法运行的问题

解决办法:

安装Visual Studio , 如果安装过,得重新打开添加删除程序找到,修复,一定要装上

20200407132545731

 

4. 可以在pro文件中写上标记版本号+ico图标(Qt5才支持)

VERSION = 2020.10.25
RC_ICONS = main0.ico

 

5. 运行文件附带调试输出窗口 CONFIG += console pro

 

6, Qt内置图标封装在QStyle中,大概七十多个图标,可以直接拿来用。

 

SP_TitleBarMenuButton,
SP_TitleBarMinButton,
SP_TitleBarMaxButton,
SP_TitleBarCloseButton,
SP_MessageBoxInformation,
SP_MessageBoxWarning,
SP_MessageBoxCritical,
SP_MessageBoxQuestion,

7 Qt最小化后恢复界面假死冻结,加上代码

void showEvent(QShowEvent *e)
{
setAttribute(Qt::WA_Mapped);
QWidget::showEvent(e);
}

8 获取标题栏高度 

style()->pixelMetric(QStyle::PM_TitleBarHeight); PM_TitleBarHeight点进去你会发现新大陆。

9.  设置分辨率支持, retina ,必须写在main函数的QApplication a(argc, argv);的前面。

#if (QT_VERSION > QT_VERSION_CHECK(5,6,0))
QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif

10. Windows 下发布  windowsDeploy的时候 需要在开始菜单栏找到MSVC,然后 windowsDeploy **.exe  这样才能保证将所有的Dll打包成功,不要使用其他路径的windowsDeploey容易出现问题

11. windows下解决中文报错的问题

将编码格式设置为utf-8 + boom的方式,如果报错那么就直接,打开报错的文件,一般是.cpp, 再修改一下 再保存 即可

 

12. windows下解决中文乱码的问题,头文件里加上以下代码

#pragma execution_character_set(“utf-8”)

13.Windows读取Mac备份和Mac系统的plist问题

Mac上的.plist文件是二进制文件,不是普通的xml文件,windows电脑无法直接读取,需要转换后才行,具体方法在研究之中

14. QT判断文件类型

current_focus_widget->inherits(“QLineEdit”)

15. QT 删除布局

if(ui->widget_head->layout()->inherits(“QVBoxLayout”))

{

delete ui->widget_head->layout();
}

16 关于Qss , 同一个widget只能设置一次styleSheet页,必要将两个设置到一起,以最后的一个生效为准 

ui->listWidget->setStyleSheet(“QListWidget::item{background: rgb(255,255,255);}QListWidget::item:selected{background: #F4F4F3;}QListWidget#listWidget{border:1px solid #E5E5E5;}”);

Share your thoughts