一、开发经验总结(21~40) 21. 如果出现"Z-order assignment: is not a valid widget."错误提示,用记事本打开对应的ui文件,找到<zorder></zorder>为空的地方,删除即可。 22. 善于利用QComboBox的addItem的第二个参数设置用户数据,可以实现很多效果,使用itemData取出来。 23. 如果用了WebEngine模块,发布程序的时候带上QtWebEngineProcess.exe+translations文件夹+resources文件夹。 24. a.setAttribute(Qt::AA_NativeWindows); 可以让每个控件都拥有独立的句柄。 25. Qt+Android防止程序被关闭。 ''' #i f defined(Q_OS_ANDROID)QAndroidService a(argc, argv);return a.exec()# elseQApplication a(argc, argv);return a.exec();# endif ''' 26. 可以对整体的指示器设置样式,例如 *::down-arrow,*::menu-indicator{} *::up-arrow:disabled,*::up-arrow:off{}。 27. 可以执行位置设置背景图片: ''' QMainWindow > .QWidget { background-color: gainsboro; background-image: url(:/images/pagefold.png); background-position: top right; background-repeat: no-repeat } ''' 28. 嵌入式linux运行Qt程序 Qt4写法:./HelloQt -qws & Qt5写法:./HelloQt --platform xcb. 29. Qtcreator软件的配置文件存放在:C:\Users\Administrator\AppData\Roaming\QtProject,有时候如果发现出问题了,将这个文件夹删除后打开creator自动重新生成即可。 30. QMediaPlayer依赖本地解码器,WIN上下载k-lite或者LAV Filters安装即可。 ![]() 31. 代码判断MSVC编译器版本,用if语句:if (_MSC_VER == 1800) MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015) MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013) MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012) MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010) MSVC++ 9.0 _MSC_VER == 1500 (Visual Studio 2008) MSVC++ 8.0 _MSC_VER == 1400 (Visual Studio 2005) MSVC++ 7.1 _MSC_VER == 1310 (Visual Studio 2003) MSVC++ 7.0 _MSC_VER == 1300 MSVC++ 6.0 _MSC_VER == 1200 MSVC++ 5.0 _MSC_VER == 1100 32. 在pro中判断不同平台:message($$QT_ARCH) contains(QT_ARCH,arm)。 33. Qt最小化后恢复界面假死冻结,加上代码 ''' void showEvent(QShowEvent *e){ setAttribute(Qt::WA_Mapped); QWidget::showEvent(e); } ''' 34. 获取标题栏高度:style()->pixelMetric(QStyle::PM_TitleBarHeight); PM_TitleBarHeight点进去你会发现新大陆。 35. 设置高分屏属性以便支持2K4K等高分辨率,尤其是手机app。必须写在main函数的QApplication a(argc, argv);的前面。 ''' #if (QT_VERSION > QT_VERSION_CHECK(5,6,0)) QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); #endif ''' 36. 如果运行程序出现 Fault tolerant heap shim applied to current process. This is usually due to previous crashes. 错误。 办法:打开注册表,找到HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\,选中Layers键值,从右侧列表中删除自己的那个程序路径即可。 37. Qt内置了QFormLayout表单布局用于自动生成标签+输入框的组合的表单界面。 38. qml播放视频在linux需要安装 sudo apt-get install libpulse-dev。 39. 可以直接继承QSqlQueryModel实现自定义的QueryModel,比如某一列字体颜色,占位符,其他样式等,重写QVariant CustomSqlModel::data(const QModelIndex &index, int role) const。 40. Qt5以后提供了类QScroller直接将控件滚动。 ''' ui->listWidget->setHorizontalScrollMode(QListWidget::ScrollPerPixel); QScroller::grabGesture(ui->listWidget,QScroller::LeftMouseButtonGesture); ''' 二、 论坛/博客/网站推荐 |foruok|http://blog.csdn.net/foruok| |jason|http://blog.csdn.net/wsj18808050| |朝十晚八|http://www.cnblogs.com/swarmbees| |BIG_C_GOD|http://blog.csdn.net/big_c_god| |公孙二狗|https://qtdebug.com/qtbook| ![]() ![]() 未完待续 ![]() 最后安利一波广告 **欢迎关注微信公众号【高效程序员】,C++/Python、学习方法、写作技巧、热门技术、职场发展等内容,干货多多,福利多多!** 点小花花,让他们知道你“在看”我 ![]() ---------------------------------------------------------------------------------------------------------------------- 我们尊重原创,也注重分享,文章来源于微信公众号:Qter欢聚在上海,建议关注公众号查看原文。如若侵权请联系qter@qter.org。 ---------------------------------------------------------------------------------------------------------------------- |