一些杂项问题处理

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

猜你喜欢

转载自blog.csdn.net/panjunnn/article/details/109669426