【问题标题】:How to run a class method after its constructor (Qt GUI)?如何在其构造函数(Qt GUI)之后运行类方法?
【发布时间】:2014-11-05 13:19:10
【问题描述】:

在程序的 main() 函数中构造一个 QMainwindow 对象并显示()n。 该对象的构造器用于创建所有 GUI 小部件。 它包含当前在 QMainWindow 小部件可见之前运行的附加代码(或方法调用)。

此代码/方法应在 QMainWindow 构造函数之后运行一次,即当应用程序窗口可见时。

根据showEvent的文档,可能会运行多次。

我是否需要在此事件中使用某种切换标志,或者是否有“更好”的解决方案(我想我读到 QTimer 可用于将方法排入事件循环)?

【问题讨论】:

  • @vahancho 他想在主窗口显示后运行代码,即排队函数调用。
  • "...在 QMainWindow 构造函数之后,即当应用程序窗口可见时"。这是两个不同的东西。是哪个?
  • @DDrmmr 应用程序窗口只有在构造函数完成并调用 show() 方法后才可见,所以它可能是多余的,但它只是一个“东西”:-)

标签: c++ qt user-interface


【解决方案1】:

您可以尝试使用超时时间为 0 秒的 Qt 单次计时器。在连接回调函数作为插槽的主窗口构造函数的末尾调用它:

QTimer::singleShot( 0, this, SLOT( onLoad() ) );                    

【讨论】:

  • Imo QMetaObject::invokeMethodQt::QueuedConnection 看起来更具可读性,那个计时器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-21
  • 1970-01-01
相关资源
最近更新 更多