gpt4 book ai didi

c++ - Qt (4.8.2) GUI - 自己的主循环而不是 QApplication::exec()

转载 作者:行者123 更新时间:2023-11-30 02:39:00 25 4
gpt4 key购买 nike

我想问一下,是否可以使用自定义主循环而不是运行 a.exec():

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Window r;
r.showFullScreen();
return a.exec();
}

类似于:

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Window r;
r.showFullScreen();

while(a.processOneEvent()) {
read_event_from_legacy_system
}

return 0;
}

在 GTK 中我可以使用 gtk_main_iteration_do() 所以我认为 Qt 中可能有类似的东西?

或者是否有任何其他正确的方法从特定遗留系统读取自定义事件?

编辑:从 FIFO 读取的事件不是系统事件(例如 X11),它们只是通过 FIFO 发送以实现 ipc 的结构。

最佳答案

所以您想使用 Qt 对 FIFO 或管道文件描述符(在 Linux 上)使用react

对于 Qt5,您可能会使用 QAbstractSocketQIoDevice及其 readyRead信号

对于 Qt4,您应该使用 QSocketNotifier及其 activated信号(因此从连接到该信号的 Qt 插槽中调用您的 read_event_from_legacy_system)。它可以轮询任何文件描述符,包括 fifo(7)

无需更改应用程序的事件循环(即使理论上您可以子类化 QApplication,但我不建议这样做)。一旦你正确地设置了你的东西,Qt 事件循环将轮询额外的文件描述符,你的代码应该读取它。

关于c++ - Qt (4.8.2) GUI - 自己的主循环而不是 QApplication::exec(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30207475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com