error LNK2038,检测到“RuntimeLibrary”的不匹配项
error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MT_StaticRelease”不匹配值“MD_DynamicRelease”
exe与dll 的RuntimeLibrary运行时库必须一致。
在工程上右键-》属性-》c/c++-》代码生成-》运行库
改成(release为MT,debug为MTD)即可解决:
error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MT_StaticRelease”不匹配值“MD_DynamicRelease”
只要是出现了检测到“RuntimeLibrary”的不匹配项,那就需要手动修改对应的多线程库。
由于找不到dll无法继续执行代码 ,dll不在exe目录下
vs2013调试执行行错位问题
在release模式下设置断点调试
VS在release模式下设置断点调试方法:
右键->"属性"->"C/C++"->"优化",优化选择:已禁用 (/Od),即可在release模式下设置断点进行调试。
现在要实现如下功能:
在一个QWidget上有好多的子QWidget,每个子QWidget上显示一张图片,鼠标点击具体图片时显示图片详细信息,鼠标在父QWidget滑动时,界面滑动出更多的QWidget。
实际操作中,子QWidget的事件会影响父类的操作,如在子QWidget点击,则不会响应父类的滑动事件。
如何解决子类对父类事件的影响
在QT基础 - 事件过滤机制一文中提到:
//给每个子窗体安装事件过滤器,用于整体的点击、滑动处理
pwidget->installEventFilter(this);
bool DragScrolldWidget::eventFilter(QObject *target, QEvent *event)
{
//停止对事件的响应,需要返回true
void CSubScreenCodeWidget::mouseMoveEvent(QMouseEvent *event)
{
QPoint pt = event->pos();
bool hover = false;
if (this->contentsRect().contains(pt))
{
hover = true;
imp->btnRemoveScreen->setVisible(true);
CString strLog;
strLog.Format("\n contains(pt)x=%d ,y=%d| contentsRect width=%d,height =%d ,x=%d,y=%d",pt.x(),pt.y() , contentsRect().width(), contentsRect().height(), contentsRect().x() , contentsRect().y());
OutputDebugStringA(strLog);
}
else {
imp->btnRemoveScreen->setVisible(false);
OutputDebugStringA("\n No contains(pt)");
}
}
不如用enter,leave事件
virtual void enterEvent(QEvent *enterEvent);
virtual void leaveEvent(QEvent *enterEvent);
//Widget内的控件不会影响到上面两个事件的触发
下面是内部控件挡住了下面的容器控件,用这个过滤器,就可以让子控件不要挡住容器控件,把事件传递给下面的容器控件
//imp->linedtScreenCode->installEventFilter(this);
//virtual bool eventFilter(QObject *obj, QEvent *event);
//bool CSubScreenCodeWidget::eventFilter(QObject *obj, QEvent *event)
//{
// bool bRet = false;
// if (obj == imp->linedtScreenCode)
// {
// switch (event->type())
// {
// case QEvent::HoverEnter: {
// imp->btnRemoveScreen->setVisible(true);
// bRet = true;
// break;
// }
// case QEvent::HoverLeave: {
// imp->btnRemoveScreen->setVisible(false);
// bRet = true;
// break;
// }
//
// }
// return bRet;
// }
// return __super::eventFilter(obj, event);
//}
QSS的Q_PROPERTY-原始属性
Qt之QSS(Q_PROPERTY-原始属性)
众所周知,使用QLabel的setPixmap()就可以将图片显示出来,做视屏解码后显示也可以如此。但是为何我今天还要费力使用基函数drawPixmap()来做绘图?理由有这么些吧:
1、使用QLabel很耗费CPU,播放画面过多有卡卡的感觉;
2、drawPixmap()使用GPU处理,相对减轻了CPU的负担;
QPixmap与QImage的区别
QPixmap依赖于硬件,QImage不依赖于硬件。
QPixmap主要是用于绘图,针对屏幕显示而最佳化设计,QImage主要是为图像I/O、图片访问和像素修改而设计的。
当图片小的情况下,直接用QPixmap进行加载,画图时无所谓,当图片大的时候如果直接用QPixmap进行加载,会占很大的内存,一般一张几十K的图片,用QPixmap加载进来会放大很多倍,所以一般图片大的情况下,用QImage进行加载,然后转乘QPixmap用户绘制。QPixmap绘制效果是最好的
(一)QPixmap和QImage的区别
error LNK2001: 无法解析的外部符号 "__declspec(dllimport) protected: virtual void __thiscall QAbstractButton::paintEvent(class QPaintEvent *)
lib 生成pdb文件, 项目属性里只有库管理器,我们选择优化-禁用即可。
/Z7, /Zi, /ZI (Debug Information Format)
_popen 进程
angleArc windowapi