qt ,多线程,在多个ui中传值

fancy_sky 2014-04-04 01:16:02
最近在用qt的多线程显示视频,不知道怎样调用第二个ui的对象。

我在主线程 lps文件中已创建一个ui的对象,:

lps::lps(QWidget *parent) : QDialog(parent),ui(new Ui::lps)//这是我的主对话框
{
ui->setupUi(this);
dis_dialog =NULL;
dis_dialog = new diswind();//这是我新建的专门用来显示的对话框,里面只有label控件用来显示

}
diswind::diswind(QWidget *parent) : QDialog(parent), ui(new Ui::diswind)
{

ui->setupUi(this);
}
void MyThread::run()// MyThread是我新建的线程类
{
//假设我已经获得视频的一帧 为frame
在这里我想调用主对话框已经创建的窗口对象,直接把视频显示在那个dis_dialog的label上
}

由于在主对话框我还有一些操作需要显示在新建的那个对话框里,故在主对话框的构造函数里就创建对象(由于软件需求,主对话生成的同时必须同时生成那个显示窗口),,,在新建线程里我就想直接把视频显示在主对话已经创建的那个dis_dialog里,,不要再创建新的diswind,
...全文
417 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
foruok 2014-04-08
  • 打赏
  • 举报
回复
使用信号和槽也是可以的,连接类型要选择queued,而非direct,传递的数据类型需要注册一下。 至于使用自定义事件,遵循如下步骤即可: 1.继承QEvent 2.定义事件类型(QEvent::User,QEvent::MaxUser之间,registerEventType or pre-define) 3.用sendEvent或postEvent发送事件 4.重写 QObject::event()函数来处理事件 举个例子供参考: --头文件 class ErrorEvent : public QEvent { public: ErrorEvent(int err, const char * desc); int errorCode() const; QString errorDescription() const; static Type eventType(); protected: static Type m_evType; int m_iError; QString m_strError; } --源文件 static QEvent::Type ErrorEvent::m_evType = QEvent::registerEventType(); ErrorEvent::ErrorEvent(int err, const char * desc) : QEvent(m_evType), m_iError(err), m_strError(desc) {} QEvent::Type ErrorEvent::eventType() { return m_evType; } int ErrorEvent::errorCode() const { return m_iError; } QString ErrorEvent::errorDescription() const { return m_strError; } --使用 QCoreApplication::postEvent(getReceiver(), new ErrorEvent(err, desc));
fancy_sky 2014-04-08
  • 打赏
  • 举报
回复
引用 2 楼 foruok 的回复:
自定义event,将视频桢封装为QImage,使用postEvent发送给Ui线程(可以在非Ui线程中保存QObject指针)。
我试过使用信号槽,我将视频帧封装为我要使用的类型(iplimge *),然后emit给ui线程,,但主线程好像总是收不到,,,不知按照你说的方法怎样做呢
foruok 2014-04-06
  • 打赏
  • 举报
回复
自定义event,将视频桢封装为QImage,使用postEvent发送给Ui线程(可以在非Ui线程中保存QObject指针)。
  • 打赏
  • 举报
回复
界面的刷新工作只能在主线程里完成,子线程不能 Qt不支持

16,216

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧