I have a QScrollArea with a lot of QLineEdits in it. The Problem is that it takes about 2sec on my computer to add 20 new QLineEdits, Take a look at this test-window:
TestWidget
::TestWidget(QWidget *parent
){
setLayout(mainLayout);
connect(testButton, SIGNAL(clicked()), this, SLOT(addButtons()));
mainLayout->addWidget(testButton);
scrollArea->setWidget(textWidget);
mainLayout->addWidget(scrollArea);
scrollArea->setWidgetResizable(true);
textWidget->setLayout(layout);
}
void TestWidget::addButtons() {
setUpdatesEnabled(false); //doesn't help
for(int i=0;i<20;i++) {
layout->addWidget(lineEdit);
}
setUpdatesEnabled(true);
}
TestWidget::TestWidget(QWidget *parent)
: QWidget(parent)
{
QHBoxLayout* mainLayout = new QHBoxLayout;
setLayout(mainLayout);
QPushButton* testButton = new QPushButton("add");
connect(testButton, SIGNAL(clicked()), this, SLOT(addButtons()));
mainLayout->addWidget(testButton);
QWidget* textWidget = new QWidget;
QScrollArea* scrollArea = new QScrollArea;
scrollArea->setWidget(textWidget);
mainLayout->addWidget(scrollArea);
scrollArea->setWidgetResizable(true);
layout = new QHBoxLayout;
textWidget->setLayout(layout);
}
void TestWidget::addButtons() {
setUpdatesEnabled(false); //doesn't help
for(int i=0;i<20;i++) {
QLineEdit* lineEdit = new QLineEdit("foo");
layout->addWidget(lineEdit);
}
setUpdatesEnabled(true);
}
To copy to clipboard, switch view to plain text mode
...i found setUpdatesEnabled but that one doesn't have any effect. What to do else?
Or how could I improve this else?
niko
Bookmarks