当前位置: 代码迷 >> QT开发 >> Qt dll带界面的有关问题
  详细解决方案

Qt dll带界面的有关问题

热度:71   发布时间:2016-04-25 04:19:27.0
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中没有问题。就这样解决了。具体那里错了还是未知。可能是修改的地方太多了。
  相关解决方案