Qt 如何在显示QDialog之前预加载它?

Qt 如何在显示QDialog之前预加载它?,qt,qtwidgets,Qt,Qtwidgets,我有一个QT应用程序,它创建了一个对话框,其中有一堆选项卡页面,每个页面都有很多小部件 我知道没有办法知道加载小部件需要多长时间,因为有很多小部件 我考虑过在初始化主窗口之后,如果我可以在后台加载对话框,那么当单击show时,这是一种更快的体验 是否有任何技术可以预加载对话框,可能是在主窗口加载之后?当我说预加载时,我指的是“新的QDialog(..)”过程。这似乎就是延迟所在,因为此时构造函数开始布置所有组件,以此类推。.show()不是问题所在,因为它会立即运行 QCustomDialog

我有一个QT应用程序,它创建了一个对话框,其中有一堆选项卡页面,每个页面都有很多小部件

我知道没有办法知道加载小部件需要多长时间,因为有很多小部件

我考虑过在初始化主窗口之后,如果我可以在后台加载对话框,那么当单击show时,这是一种更快的体验

是否有任何技术可以预加载对话框,可能是在主窗口加载之后?当我说预加载时,我指的是“新的QDialog(..)”过程。这似乎就是延迟所在,因为此时构造函数开始布置所有组件,以此类推。.show()不是问题所在,因为它会立即运行

QCustomDialog * customDialog = new QCustomDialog(); // the latency
customDialog->show(); //not the latency

class QCustomDialog {
  QCustomDialog::QCustomDialog() {
   //creation of many nesscary widgets and added to the dialog
   QLabel * lab = new QLabel("Label 1");
  ...
 };

 
};

如果您只需要让用户知道应用程序正在启动,并且在加载主窗口之前需要几秒钟,您可以使用


这允许您在主窗口加载时显示图像。如果应用程序花费的时间超过几秒钟,并且对您的应用程序有意义,您也可以使用
qsplashsscreen::message()
以在加载应用程序的不同部分时显示消息。

可能需要重新设计,以便在有人单击选项卡之前不创建单独的选项卡页。@joequest1 1 1)不要重视DVs,这些投票只表明(在我写此评论时)至少有两个有投票权的用户不喜欢你的问题,还有另外两个条件和它们的味道一样。我没有看到有人问:他们为什么给我紫外线?由于它对投票没有特别的兴趣,而是对累积的投票感兴趣,所以一般来说,你的帖子我们既不喜欢也不不讨厌。@joequest1 2)关注你的问题,创建QDialog不会占用大量时间,因此可能是你没有指出的代码的其他部分导致了问题,比如你有XY问题。3) 感谢您的帮助,因为我们希望您澄清您的问题,所以我们很少有用户尝试帮助您。如果您的问题对我们不感兴趣,我们将继续前进,不会有任何帮助。@joequest1创建100个小部件没什么,您不应该有问题。我怀疑这是另一个问题。您是否准确测量了这些小部件的创建时间?无论如何,你提供的代码不是这样的,所以我会按照我的方式去做。我仍然看不到创建代码所属的方法,也看不到调用它的地方。正如@eyllanesc所说,制作一个
mre
,因为它确实看起来像一个XY问题。同时,您还可以尝试移动
QCustomDialog*customDialog=newqcustomdialog()从它所在的任何位置,并将其放入
主窗口的构造函数中
。这样做只是为了测试,因为我个人强烈反对在实践中这样做。