Class
Qt にGUI C++がSLOT
あり、テキスト ボックスとラベルの配列を に追加しますQGridLayout
。配列は、変数 say に応じて正方n
です。つまり、n == 10
に10x10
QTextbox
&QLabel
がある場合QGridLayout
。基本的に、ユーザーが [増加] ボタンを押すと、 の値がn
1 増加し、それに応じてQTextbox
&QLabel
が作成され、SLOT
& に追加されますQGridLayout
。の値が の場合n
、GUI が更新されるまでに1 ~ 2秒15
かかります。ただし、その中で使用すると、実際の実行時間は約100 msであることがわかりました。にいる間 QTime
SLOT
SLOT
デバッグモードで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())
はSLOT
Ofcourse!の最後の行です。