31、判断编译器类型、编译器版本、操作系统。
//GCC编译器 #ifdef __GNUC__ #if __GNUC__ >= 3 // GCC3.0以上 //MSVC编译器 #ifdef _MSC_VER #if _MSC_VER >=1000 // VC++4.0以上 #if _MSC_VER >=1100 // VC++5.0以上 #if _MSC_VER >=1200 // VC++6.0以上 #if _MSC_VER >=1300 // VC2003以上 #if _MSC_VER >=1400 // VC2005以上 #if _MSC_VER >=1500 // VC2008以上 #if _MSC_VER >=1600 // VC2010以上 #if _MSC_VER >=1700 // VC2012以上 #if _MSC_VER >=1800 // VC2013以上 #if _MSC_VER >=1900 // VC2015以上 //Borland C++ #ifdef __BORLANDC__ //Cygwin #ifdef __CYGWIN__ #ifdef __CYGWIN32__ //mingw #ifdef __MINGW32__ //windows #ifdef _WIN32 //32bit #ifdef _WIN64 //64bit #ifdef _WINDOWS //图形界面程序 #ifdef _CONSOLE //控制台程序 //Windows(95/98/Me/NT/2000/XP/Vista)和Windows CE都定义了 #if (WINVER >= 0x030a) // Windows 3.1以上 #if (WINVER >= 0x0400) // Windows 95/NT4.0以上 #if (WINVER >= 0x0410) // Windows 98以上 #if (WINVER >= 0x0500) // Windows Me/2000以上 #if (WINVER >= 0x0501) // Windows XP以上 #if (WINVER >= 0x0600) // Windows Vista以上 //_WIN32_WINNT 内核版本 #if (_WIN32_WINNT >= 0x0500) // Windows 2000以上 #if (_WIN32_WINNT >= 0x0501) // Windows XP以上 #if (_WIN32_WINNT >= 0x0600) // Windows Vista以上
32、在pro中判断Qt版本及构建套件位数
#打印版本信息
message(qt version: $$QT_VERSION)
#判断当前qt版本号
QT_VERSION = $$[QT_VERSION]
QT_VERSION = $$split(QT_VERSION, ".")
QT_VER_MAJ = $$member(QT_VERSION, 0)
QT_VER_MIN = $$member(QT_VERSION, 1)
#下面是表示 Qt5.5
greaterThan(QT_VER_MAJ, 4) {
greaterThan(QT_VER_MIN, 4) {
#自己根据需要做一些处理
}
}
#QT_ARCH是Qt5新增的,在Qt4上没效果
#打印当前Qt构建套件的信息
message($$QT_ARCH)
#表示arm平台构建套件
contains(QT_ARCH, arm) {}
#表示32位的构建套件
contains(QT_ARCH, i386) {}
#表示64位的构建套件
contains(QT_ARCH, x86_64) {}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_MACHINESoftwareMicrosoftWindows NTCurrentVersionAppCompatFlagsLayers,选中Layers键值,从右侧列表中删除自己的那个程序路径即可。
37、Qt内置了QFormLayout表单布局用于自动生成标签+输入框的组合的表单界面。
38、qml播放视频在linux需要安装 sudo apt-get install libpulse-dev。
39、可以直接继承QSqlQueryModel实现自定义的QueryModel,比如某一列字体颜色,占位符,其他样式等,重写QVariant CustomSqlModel::data(const 40、QModelIndex &index, int role) const。
40、Qt5以后提供了类QScroller直接将控件滚动。
//禁用横向滚动条 ui->listWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); //禁用纵向滚动条 ui->listWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); //设置横向按照像素值为单位滚动 ui->listWidget->setHorizontalScrollMode(QListWidget::ScrollPerPixel); //设置纵向按照像素值为单位滚动 ui->listWidget->setVerticalScrollMode(QListWidget::ScrollPerPixel); //设置滚动对象以及滚动方式为鼠标左键拉动滚动 QScroller::grabGesture(ui->listWidget, QScroller::LeftMouseButtonGesture); //还有个QScrollerProperties可以设置滚动的一些参数
41、如果使用sqlite数据库不想产生数据库文件,可以创建内存数据库。
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(":memory:");42、清空数据表并重置自增ID,sql = truncate table table_name。
43、Qtchart模块从Qt5.7开始自带,最低编译要求Qt5.4。在安装的时候记得勾选,默认不勾选。使用该模块需要引入命名空间。
#include <QChartView> QT_CHARTS_USE_NAMESPACE class CustomChart :public QChartView
44、QPushButton左对齐文字,需要设置样式表QPushButton{text-align:left;}
45、QLabel有三种设置文本的方法,掌握好Qt的属性系统,举一反三,可以做出很多效果。
ui->label->setStyleSheet("qproperty-text:hello;");
ui->label->setProperty("text", "hello");
ui->label->setText("hello");
18180749853 蜀ICP备2021001672号