【发布时间】:2022-01-24 06:21:33
【问题描述】:
我是 Qt 新手,但需要解决一个难题。
需要循环运行 qt 主窗口,其中 app.exec() 将阻塞 main 函数,直到收到退出。 但我想根据收到的事件循环显示和隐藏主窗口以隐藏和显示主窗口
这里是示例代码,现在我正在使用示例:
void main(int argc, char **argv)
{
//QT window init
w.setVisible(true);
app.exec();
}
可以调用qt窗口的time init并在循环中隐藏和显示吗?
我需要添加while循环,基于事件隐藏或显示主窗口将显示和隐藏
void main(int argc, char **argv)
{
//QT window init
w.setVisible(true);
app.exec();
while(1)
{
//if show status received
if(show)
w.setVisible(true);
// if hide window status received
else if(hide)
w.setVisible(false);
}
}
如何让 app.exe 一直处于活动状态以实现窗口的隐藏/显示? 还有其他 QT api 调用吗?
【问题讨论】:
-
为什么不在 QT 的事件循环中接收这些事件(或将它们转发到那里)并使用一些 QT 特定的机制(例如信号槽连接)来触发窗口上的操作?你在这里特别问的似乎不仅困难(如果根本不可能的话)而且还建议XY problem。
-
无论设置这些
show或hide变量的代码都可以向您的主窗口发送信号。 -
感谢快速重播@Botje 我怎样才能连续循环发出信号?因为我们无法预测隐藏或显示事件,我需要使用线程吗?
-
在不知道您的意图的情况下很难回答,但是您不能使用重复的 QTimer 每 x 秒发出一个事件信号吗?如果不是,什么进程决定是隐藏还是显示窗口?
-
来自 https 请求或可能来自用户通过 gui ,那么我如何在循环中显示/隐藏窗口?有什么建议可以在循环中隐藏和显示主窗口吗? stackoverflow.com/questions/5129788/… 或 QT 中的任何其他 API,然后是 app.exec