http://t.zoukankan.com/feiyangqingyun-p-14484708.html
有两种解决办法,使用一种即可。
在qt Designer中设计好界面后,运行出现文字无法显示全等问题,是由于显示器设置了缩放所导致的。大致情况如下图。
只需要在主函数中加入这段程序,便自动适配高分辨率(需要qt版本大于5.9)
#if (QT_VERSION >= QT_VERSION_CHECK(5,9,0))
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif
另一种解决办法就是 使用exe可执行文件的高dpi缩放代替
右键exe文件,点击属性->兼容性->更改高DPI设置,勾选代替高dpi缩放行为,选择系统,确定。
更改后效果如下
在.cpp文件加入以下语句
#pragma execution_character_set("utf-8") //解决中文乱码
参考这个连接【Qt 之 qDebug()打印和QString中文乱码】
//.cpp文件
#include "dataCollectThread.h"
dataCollectThread::dataCollectThread(QObject *parent) : QObject(parent)
{
}
dataCollectThread::~dataCollectThread()
{
}
void dataCollectThread::on_dataCollectTimer()
{
qDebug() << "timer trigger!";
}
//.h文件
#pragma once
#include
#include
class dataCollectThread : public QObject
{
Q_OBJECT
public:
dataCollectThread(QObject *parent = Q_NULLPTR);
~dataCollectThread();
public slots:
void on_dataCollectTimer();
};
/************多线程**********/
QThread *dataQthread = nullptr;
dataCollectThread *mydataCollectThread = nullptr;
/*数据采集线程*/
dataQthread = new QThread(this);
mydataCollectThread = new dataCollectThread();
mydataCollectThread->moveToThread(dataQthread);
connect(dataQthread, &QThread::finished, mydataCollectThread, &QObject::deleteLater);
connect(dataQthread, &QThread::finished, dataQthread, &QObject::deleteLater);
connect(dataCollectTimer, &QTimer::timeout, mydataCollectThread, &dataCollectThread::on_dataCollectTimer);
dataQthread->start();
if (dataQthread->isRunning())
{
dataQthread->quit();
dataQthread->wait();
}
1.新建项目
2.选择QT模组
将zauxdll.dll、zauxdll.lib、zauxdll2.h、zmotion.dll文件拷贝到工程目录下
将zauxdll2.h添加到VS项目头文件中,并包含该头文件
在属性页->链接器->附加依赖项中添加zauxdll.lib
在头文件下添加控制器链接句柄
ZMC_HANDLE g_handle = NULL; //控制器链接句柄
以及测试函数
int Zresult;
char buffer[13] = "192.168.0.11";
Zresult = ZAux_OpenEth(buffer, &g_handle);
qDebug() << "connectBtn:" << Zresult;
连接成功则ZAux_OpenEth返回值为0,说明正运动控制卡环境配置成功。
#pragma once
#include
#include
using namespace Eigen;
#include "lbascapturetest.h"
#include
#include
using namespace cv;
LbasCaptureTest::LbasCaptureTest(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
String str = "lena.png";
Mat image = imread(str);
Mat binary;
cvtColor(image, binary, COLOR_BGR2GRAY);
imshow("test_opencv_srtup", binary);
waitKey(0);
}
LbasCaptureTest::~LbasCaptureTest()
{}
C++11 提供了std::move 函数来把左值转换为右值,
//格式转换
QImage Mat2QImage(const cv::Mat& mat);
cv::Mat QImage2cvMat(QImage &&image);
Mat tempMat = QImage2cvMat(std::move((QImage&)recv));
清理+重新生成解决方案
将opencv_videoio_ffmpeg454_64.dll(根据你opencv版本自行选择)放入到工作目录下
Qt Linguist QT快捷无误的翻译
1.下载 并安装 CUDA 和 CUDNN ,详细请看该教程
https://blog.csdn.net/m0_45447650/article/details/123704930
2.Cmake 下载安装:https://cmake.org/download/
3.OpenCV4.5 下载安装: https://opencv.org/releases.html
4.opencv-contrib-4.5.4下载 安装:https://github.com/opencv/opencv_contrib
将Opencv4.54和opencv-contrib-4.5.4放在同一目录下,并新建一个build文件夹用来存放之后编译的文件。如果你将Opencv安装后的文件夹进行了重命名,或者移动,一定要在系统环境变量中将Opencv路径更改过去。
用管理员身份运行CMake
第一行选择Opencv4.54 sources文件夹,第二行选择编译后的文件夹。
点击Configure,根据你的VS版本,按下图步骤选择。
在CUDA安装好的前提下,在Search中输入cuda,将CUDA的包都勾选上。
选中 OPENCV_EXTRA_MODULES_PATH,输入你的opencv_contrib-4.5.4/opencv_contrib-4.5.4/modules 路径。然后勾选OPENCV_ENABLE_NONFREE,和BUILD_opencv_world。
点击Configure,进行第二次编译。
编译完成后,点击Generate。
Generate完成后,点击Open Project。在VS界面中,找到ALL_BUILD,注意选择的是Release 还是 Debug。