Painting
これは、 Qt で行われたことに関する基本的な疑問です。私は自分のアプリケーションQScrollArea
としてを持っています。に を追加しました。のはです。このように追加すると:centralWidget
Main Window
QFrame
frame
scrollarea
Layout
QFrame
QGridLayout
widgets
layout
MainWindow::AddLabel()
{
setUpdatesEnabled(false);
QGridLayout *myGrid = (QGridLayout *)ui->frame->layout();
for(int i = 0; i < 1000; i++)
{
QLabel *label = new QLabel();
QString str;
str.SetNum(i);
label->SetText(str);
myGrid->AddWidget(label, 0, i, 0);//add label to i'th column of row 0
}
setUpdatesEnabled(true);
repaint();
}
質問の焦点ではないため、メモリリークについて心配しないでください。 だから私の疑問は次のとおりです。
disabled
ウィジェットをレイアウトに追加する際に更新を設定することは役に立ちますか?ウィンドウを最大化しても、すべての QLabel が表示されるわけではありません。コード フローが上記の関数を離れてイベント ループに移動すると、すべての QLabel と QFrame の膨大な領域が描画されますか? または、表示されている QLabel のみと、表示されている QFrame のその領域のみがペイントされていますか?