我Class在 Qt 中有一个 GUI C++,它有一个SLOT在QGridLayout. 该数组是正方形的,取决于变量 say n。即如果n == 10那么有10x10 QTextbox&QLabel在QGridLayout. 基本上,当用户按下“增加”按钮时, 的值n会增加 1 & 相应地QTextbox&QLabel被创建在SLOT& 添加到QGridLayout. 当值为nis15时,更新 GUI 需要1-2 秒。但是,当我使用它时QTime,SLOT它告诉我实际执行时间SLOT约为100 ms。而在我观察到的调试QDebug模式用于打印经过的时间,即使 GUI 没有针对更高的n. 我想知道为什么会有这么多延迟以及执行之后运行的内容,SLOT以便我可以测量相同的时间。我希望我说清楚了。如果您不能理解我的问题,请告诉我。谢谢你。
实际上,我现在没有确切的代码。因此,我创建了一个示例代码,突出显示了我的代码逻辑。请忽略任何语法错误,因为我已经尽快准备好了。很抱歉:(所以这里是代码片段:
Class A
{
private:
int n;
QList <QLabel *> *labelList;
QList <QTextEdit *> *textList;
QGridLayout *inp;
public slots:
updateGUI();
}
A::updateGUI()
{
QTime t;
t.start();
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
int even = j%2;
QLabel *tempLab = new QLabel();
//some stuff for initialisation of the QLabel
QTextEdit *tempText = new QTextEdit();
//some stuff for initialisation of the QTextEdit
labelList->append(tempLab);
textList->append(tempText);
if(even == 0)
inp->AddWidget(tempLab, i, j, 5, 5, Qt::AlignCenter);
else
inp->AddWidget(tempText, i, j, 5, 5, Qt::AlignCenter);
}
}
QDebug("%d", t.elapsed());
}
PS:QTime tobj.start()是第1行,SLOT&QDebug("%d", tobj.elapsed())是SLOTOfcourse的最后一行!