• 5879阅读
  • 7回复

Qt中外部函数可不可以调用Widget类里的控件??? [复制链接]

上一主题 下一主题
离线liuligang88
 

只看楼主 倒序阅读 楼主  发表于: 2015-12-14
Qt中外部函数可不可以调用Widget类里的控件???如果可以,该如何调用?线程QThread的run()中可不可以调用Widget类里的函数?如果可以,该如何调用?
求大神解答,谢谢!!!
离线yanwuyue

只看该作者 1楼 发表于: 2015-12-15
你的问题要从两个方面回答

1.Qt的UI默认生成是在private里的,将其改成public,外部即可直接使用
2.Qt的UI必须在主线程中运行,次线程采用1的方法调用肯定会崩溃

所以如果你的回调函数也是在主线程运行的,可以考虑改成public直接调用,不过也不建议这么搞
像你这种想在次线程中调用的是肯定不能这么干,
采用Qt的信号与槽建立连接控制UI
离线liuligang88

只看该作者 2楼 发表于: 2015-12-15
恩,非常感谢你的回复。刚接触线程,还不太懂。
你看看我下面的代码,我想通过按钮button_badblock来调用线程 thread_BadBlock,有啥问题???帮帮忙。谢谢!!!

//构造函数里
connect(button_badblock,SIGNAL(clicked()),this,SLOT(Bad_Block_Plane()));

void Thread_BadBlock::run()
{
    MA_BYTE bInstance = g_bInstance;
    Bad_Block_Info(bInstance);
}

void Widget::Bad_Block_Plane()
{
      thread_BadBlock = new Thread_BadBlock;
     thread_BadBlock->start();
}

Bad_Block_Info(bInstance);这个是个外部函数
离线liuligang88

只看该作者 3楼 发表于: 2015-12-15
恩,非常感谢你的回复。刚接触线程,还不太懂。
你看看我下面的代码,我想通过按钮button_badblock来调用线程 thread_BadBlock,有啥问题???帮帮忙。谢谢!!!

//构造函数里
connect(button_badblock,SIGNAL(clicked()),this,SLOT(Bad_Block_Plane()));

void Thread_BadBlock::run()
{
    MA_BYTE bInstance = g_bInstance;
    Bad_Block_Info(bInstance);
}

void Widget::Bad_Block_Plane()
{
      thread_BadBlock = new Thread_BadBlock;
     thread_BadBlock->start();
}

Bad_Block_Info(bInstance);这个是个外部函数
离线yanwuyue

只看该作者 4楼 发表于: 2015-12-15
MA_BYTE 是什么
离线liuligang88

只看该作者 5楼 发表于: 2015-12-16
哦,这个是定义的变量类型,比如char,long这些
离线liuligang88

只看该作者 6楼 发表于: 2015-12-16
而且将ui里的控件放在public:下面,外部函数不能直接调用
离线z609932088

只看该作者 7楼 发表于: 2015-12-25
帮你顶起来
有阳光的地方就是青春
快速回复
限100 字节
 
上一个 下一个