代码之家  ›  专栏  ›  技术社区  ›  Petruza

在Qt应用程序上把应用程序的代码放在哪里?

  •  0
  • Petruza  · 技术社区  · 16 年前

    我从qt4开始,我想知道把我的应用程序代码放在哪里。
    在这里?

    void MainWindow::changeEvent(QEvent *e) {...}

    还是在这里?(具体在哪里?)

    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        MainWindow w;
        w.show();
        return a.exec();
    }

    如果我希望我的应用不仅能对用户事件做出反应,而且能在循环中定期执行,那么我应该把循环放在哪里呢?

    2 回复  |  直到 16 年前
        1
  •  2
  •   Kaleb Pederson    16 年前

    除非您在非GUI线程中循环,否则您将通过循环(在隐式主GUI线程中)来阻塞GUI。以下是几种不同的方法:

    1. 使用线程 . qt的信号和插槽是线程安全的。因此,在一个线程中,您可以调用模拟器(它可能会阻塞),然后将数据返回到调用线程。然后,您可以向GUI线程发出一个信号,该线程将响应该信号并相应地更新GUI。
    2. 使用计时器 . 你可以使用 QTimer (或) singleShot 计时器)设置为零毫秒的延迟。这会影响到尽可能频繁地调用插槽,而不会阻塞循环。如果插槽很快返回,这看起来不会阻塞GUI,并稍微简化编程。

    还有其他不同的方法,例如使用 processEvents() 但是我个人推荐线程方法。

        2
  •  2
  •   Community Mohan Dere    9 年前

    qt有自己的主循环,您可以使用qtimer类连接到它。

    如果要提供自己的事件循环,可以使用 QApplication::processEvents( )向qt发出信号来处理它的事件(并保持一个负责任的用户界面)。

    也, QAbstractEventDispatcher 可能对你有用。

    This 这个问题也可能有用。

    推荐文章