首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

Qt dll带界面的有关问题

2012-12-16 
Qt dll带界面的问题extern C SVGDATA_DLLSHARED_EXPORT bool GetSvgFileStream(QByteArray * data,QWidg

Qt dll带界面的问题
extern "C" SVGDATA_DLLSHARED_EXPORT bool GetSvgFileStream(QByteArray * data,QWidget *from)
{
    Qmydialog *dialog = new Qmydialog(...);
    dialog.exec();
}
就这一样接口,Qmydialog是丛Qdialog中既承下来的
现在的问题是,界面正常显示,单是击一点击事件就报错,报告是内存错误。不知道怎么回事?无论使用connect还在在ui中直接关联都错,请问是怎么回事? 有例子更好了。gucunlinb@163.com
[最优解释]
LZ可否解释你调用  dialog.exec(); 的用意是什么 ?

首先你这不是指针么?

    Qmydialog *dialog = new Qmydialog(...);
    dialog.exec();


当然,重点是,exec将启动Qt循环事件,监听行为,通常一个应用程序启动一个事件循环,在main函数中:
QApplication a(argc,argv);
//do something 
return a.exec();


如果展示一个dialog, 调用
dialog->show();

[其他解释]
你看下创建的这个位置的线程ID和主界面的线程ID是否一致
对于QT GUI来说 只能有一个界面线程
[其他解释]
跟dll没有太大关系,你还是调试下单击时会执行的代码吧
[其他解释]
看出错时候的调用栈吧
[其他解释]
什么意思?能讲清楚些吗》
[其他解释]
这是个dll当然没有主界面在一起的,这是给别人调用的,exec不是有自己的消息循环吗,才这样用的。关键是界面能出来,里面的事件一点就报错。
[其他解释]
引用:
LZ可否解释你调用  dialog.exec(); 的用意是什么 ?

首先你这不是指针么?


C/C++ code



12

    Qmydialog *dialog = new Qmydialog(...);     dialog.exec();

当然,重点是,exec将启动Qt循环事件,监听行为,通常一个应用程序启动一个事件循环,在main函数中:

……

回版主
dialog->exec(),上面的是手误.问题是我在Dll中封装的界面调用show()要么一闪就过了,要么就是出错。才用exec的。其中Qmydialog里面做了很多工作,有Qlistview,QLabel等控件和相关事件,其中QLabel使用的QMyLabel丛QLabel中既承的类增加了单击和双击事件。几十个Qmylabel是动态创建显示图片的。大致就是这样。界面能正常显示出来,一单击listview控件触发Click事件就出错。其它事件还没有机会试.
[其他解释]
问题解决了,谢谢大家关心。我说说解决过程
事件错全部上就是执行到ui->...访问ui控件的语句出错的。调试修改无果。后来只能重建项目将代码移植到新的Dialog中没有问题。就这样解决了。具体那里错了还是未知。可能是修改的地方太多了。

热点排行