qgraphicphotoview依赖赖哪个动态库

急急急求助重写了Qgraphicview和Qgraphicscene类,关于鼠标问题【qt吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:34,701贴子:
急急急求助重写了Qgraphicview和Qgraphicscene类,关于鼠标问题收藏
重写Qgraphicview和Qgraphicscene类,Qgraphicscene类的mousepressevent事件中实现右键在图像上画圆圈,同时会相应上下文菜单,Qgraphicview中鼠标的右键无任何方法的实现,。程序运行后在界面上右击,可以相应上下文菜单,但是没有出现圆圈,,,,是什么情况?本来以为是加载底层图像的问题,但是我在加载qpixmapitem的时候把该qpixmapitem。setzvalue(0);请问问我这样做的问题出在那里?怎么能出现右键画圆圈呢?求各位大神不吝赐教啊
登录百度帐号推荐应用3362人阅读
Android系统框架学习(101)
昨天调试一个CA库link失败的问题:ca厂商一般提供的都是静态ca库,这样子你直接将其与
你的库link在一起即可使用,但由于apk在ndk中编译器:android-ndk-r6b\arm-linux-androideabi-4.4.3
而ca库使用hisi编译器:arm-eabi-4.4.0_hisi 两者使用的编译不同,所以需要在linux android环境
下将ca静态库打包成动态库,而且用户实现的ca函数将会link失败,生成的动态库将在ndk中使用。
下面是一个简单的测试例子,用于说明一下如何做到相互依赖而编译生成动态库的方法
1、首先编译生成动态库
首先定义头文件:test.h
#ifndef XXX_TEST_H___
#define XXX_TEST_H___
/* 由link的库实现 */
extern void testA();
extern void testB();
/* 由本身库实现而由外部调用 */
extern void testC();
extern void testD();
struct AAInterface{
void (*testA)();
void (*testB)();
extern void setInterface(struct AAInterface *cb);
#endif /* XXX_TEST_H___ */
然后实现文件:testA.c
#include &assert.h&
#include &stdlib.h&
#include &string.h&
#include &cutils/log.h&
#include &test.h&
static struct AAInterface g_aa_
/* 由link的库实现 */
extern void testA(){
g_aa_interface.testA();
extern void testB(){
g_aa_interface.testB();
extern void testCall(){
LOGI(&testCall 111&);
LOGI(&testCall 222&);
LOGI(&testCall 333&);
/* 由本身库实现而由外部调用 */
extern void testC(){
LOGI(&testC call in---&&);
testCall();
LOGI(&testC call out&---&);
extern void testD(){
LOGI(&testD call in---&&);
testCall();
LOGI(&testD call out&---&);
extern void setInterface(struct AAInterface *cb){
LOGI(&setInterface call in --&&);
memset((void*)&g_aa_interface,0x00,sizeof(g_aa_interface));
g_aa_interface.testA = cb-&testA;
g_aa_interface.testB = cb-&testB;
LOGI(&setInterface call out &--&);
这里最重要的是利用setInterface接口解决相互link的问题,这就是本质所在。大家一看就明白了,这也是动态
库导出函数的最好方法,一般使用QueryInterface及enumInterface即可,使用结构将
编译方法:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)
LOCAL_MODULE_TAGS := eng
LOCAL_MODULE:= libtestASO
LOCAL_SRC_FILES:= \
LOCAL_SHARED_LIBRARIES := liblog\
LOCAL_C_INCLUDES += \
&& &$(TOP)/frameworks/base/test/testA \
LOCAL_CFLAGS += -D_cplusplus
LOCAL_PRELINK_MODULE := false
include $(BUILD_SHARED_LIBRARY)
2、使用生成的动态库
#include &assert.h&
#include &stdlib.h&
#include &string.h&
#include &cutils/log.h&
#include &test.h&
/* 由link的库实现 */
extern void testA(){
LOGI(&testA call ...&);
extern void testB(){
LOGI(&testB call ...&);
int main(void){
struct AAInterface *itf = (struct AAInterface*)calloc(1,sizeof(struct AAInterface));
itf-&testA = testA;
itf-&testB = testB;
setInterface(itf);
ok,知道了如何解决这种相互依赖的方法,解决方法相当解决。。对于这种A需要link B,而B又需要link A的相互关系,这种方法就会起到很好的作用了。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1217028次
积分:14427
积分:14427
排名:第869名
原创:169篇
转载:47篇
评论:350条
文章:37篇
阅读:292218
(1)(2)(7)(2)(1)(6)(1)(2)(1)(2)(2)(1)(2)(1)(1)(1)(5)(1)(3)(6)(3)(4)(4)(3)(1)(8)(1)(3)(11)(12)(16)(7)(16)(13)(9)(22)(24)(1)(10)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'在视图上显示一个场景,分别都可以相应mousePressEvent;
但是如果,两个同时打开,是有视图可以相应,场景无法响应;
可以通过发消息解决:
& &void myGraphicsView::mousePressEvent(QMouseEvent *event) //
& myQGraphicsScene * pScene = findChild&myQGraphicsScene*&(&pmyQGraphicsScene&);
& QGraphicsSceneMouseEvent * pQGraphicsSceneMouseEvent = new QGraphicsSceneMouseEvent(QEvent::Type::GraphicsSceneMousePress);
& pQGraphicsSceneMouseEvent-&setPos(event-&pos());//这里可以设置多个参数;
& QCoreApplication::postEvent( pScene, pQGraphicsSceneMouseEvent &);
但是这种方法有很多问题:
首先很麻烦,所有的参数都要计算设置;
最重要的问题是这里其实是破坏了消息的传递,Qt本身会对消息在窗体之间的传递已经设计好了,但是这里继承mousePressEvent时,没有继续传递;
mousePressEvent是虚函数,作为消息的,所以,想要仅需传递消息下去,
解决方法是:在函数末尾(当然根据需要添加到开头可以)添加QGraphicsView::mousePressEvent(event);
& &void myGraphicsView::mousePressEvent(QMouseEvent *event) //
&&myQGraphicsScene * pScene = findChild&myQGraphicsScene*&(&pmyQGraphicsScene&);
QGraphicsView::mousePressEvent(event);
这样消息就传递到QGraphicsView中,消息就可以被Qt继续执行下去了;
所以这里给出一个重要的 消息继承实现原则:继承父类后,实现父类的虚函数消息,必须在子类实现的消息中添加 “ __super::“implement”Event( event &) & ”; (如果父类的消息是纯虚函数就不必要了)
对于虚函数在不同的情况下有不同的应用,所以还要熟练灵活掌握;
这样的例子主要可以参考MFC对消息的应用;
这里有篇文章:
本文已收录于以下专栏:
相关文章推荐
以前我一直以为:在父widget上摆一个子widget后,当click子widget时:只会进入到子widget的相关事件处理函数中,比如进入到mousePressEvent()中, 而不会进入到父w...
QWidget体系与QGraphicsWidget体系之间的区别
01:57 3364人阅读 评论(18) 收藏 举报
http://blog.csdn.net/NRC_Do...
   在处理 qt 间窗体间消息传递时,一般都是使用信号槽函数的方式来进行,只需要在发送消息窗体 emit 消息,在接受窗体响应 slot 槽函数即可,不过这一般都是在子窗体和父窗体或子控件和...
源码已上传至CSDN,http://download.csdn.net/source/2808505
QGraphicsView用来显示一个滚动视图区的QGraphicsScene内容。QGr...
源码已上传至CSDN,http://download.csdn.net/source/2808505
QGraphicsView用来显示一个滚动视图区的QGraphicsScene内容...
转自:http://blog.csdn.net/huihui1988/article/details/5725955
源码已上传至CSDN,http://download.csdn.net/sour...
前言最近一直使用QGraphicsView框架在我的一个实际项目中,官方文档好多都没说清楚啊,有木有?!文档都翻光了,却还是有好多没明白。
一个令我恼火的bug就是,明明log打出来的每个It...
他的最新文章
讲师:王哲涵
讲师:王渊命
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)使用QGraphicView控件的对话框不能作为static变量或全局变量?
我写了如下函数:其中class StationStatus中使用了QGraphicView控件
StationStatus& StaticObject::stationStatus()
static StationStatus
当在程序使用StaticObject::stationStatus()方法打开窗口后,退出程序时崩溃,提示:
Starting F:\WORK\NCSE\FK\build-mainStation-Desktop_Qt_5_2_1_MinGW_32bit-Debug\debug\mainStation.exe...
ASSERT: &!&No style available without QApplication!&& in file
F:\WORK\NCSE\FK\build-mainStation-Desktop_Qt_5_2_1_MinGW_32bit-Debug\debug\mainStation.exe exited with code 3
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:19185次
排名:千里之外
原创:14篇
(6)(4)(1)(3)(1)(1)(2)(1)(2)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 cardview依赖 的文章

 

随机推荐