Qt开发经验小技巧合集 (2)

可以执行位置设置背景图片。

QMainWindow > .QWidget { background-color: gainsboro; background-image: url(:/images/pagefold.png); background-position: top right; background-repeat: no-repeat }

嵌入式linux运行Qt程序 Qt4写法:./HelloQt -qws & Qt5写法:./HelloQt --platform xcb

Qtcreator软件的配置文件存放在:C:\Users\Administrator\AppData\Roaming\QtProject,有时候如果发现出问题了,将这个文件夹删除后打开creator自动重新生成即可。

QMediaPlayer是个壳,依赖本地解码器,视频这块默认基本上就播放个MP4,如果要支持其他格式需要下载k-lite或者LAV Filters安装即可(WIN上,其他系统上自行搜索)。如果需要做功能强劲的播放器,初学者建议用vlc、mpv,终极大法用ffmpeg。

判断编译器类型、编译器版本、操作系统。

//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以上

在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) {}

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

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

获取标题栏高度:style()->pixelMetric(QStyle::PM_TitleBarHeight); PM_TitleBarHeight点进去你会发现新大陆。

设置高分屏属性以便支持2K4K等高分辨率,尤其是手机app。必须写在main函数的QApplication a(argc, argv);的前面。

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

如果运行程序出现 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键值,从右侧列表中删除自己的那个程序路径即可。

Qt内置了QFormLayout表单布局用于自动生成标签+输入框的组合的表单界面。

qml播放视频在linux需要安装 sudo apt-get install libpulse-dev。

可以直接继承QSqlQueryModel实现自定义的QueryModel,比如某一列字体颜色,占位符,其他样式等,重写QVariant CustomSqlModel::data(const QModelIndex &index, int role) const。

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可以设置滚动的一些参数

如果使用sqlite数据库不想产生数据库文件,可以创建内存数据库。

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName(":memory:");

清空数据表并重置自增ID,sql = truncate table table_name。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzxjpf.html