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