Qt-interest Archive, May 2008
blinking in QTableView, how to prevent?
Message 1 in thread
Hi all,
I am trying to present multidimensinal arrays by slices into QTableView
Which slice to show is defined in external control.
Change of the slice supposed to change only data displayed into the
cell.
All cells and header sizes supposed to remain the same.
And it ends up the same, but blinking occurs.
It seems that QTableView draws itself twice, even though
setUpdatesEnabled supposed to prevent it.
It looks like that double redraw happens as a result of
ui.tableView->setUpdatesEnabled ( true ); and is related to header size
(even though it is the same , it is drawn first with a different size,
then is redrawn and become the same size)
The idea of my code :
// prevent update of the table
ui.tableView->setUpdatesEnabled ( false );
// change custom model (m_pWDataSource) parameters
// in order proper slice to be displayed
// presented here just to explain an idea.
m_pWDataSource->setCurrentSlice( nSlice ); // custom function
// reset model for QTableView
// set model here to NULL first seems required to insure that
// QTableView redraw all cells.
ui.tableView->setModel( NULL );
ui.tableView->setModel( m_pWDataSource );
// update the table
ui.tableView->setUpdatesEnabled ( true );
Any idea how to remove blinking?
Alex Malyushytsky
Research Engineer - Weidlinger Associates Inc.
office: 650 230 0210,
direct: 650 230 0349
web: http://www.wai.com
--
[ signature omitted ]
Message 2 in thread
Consider using QAbstractItemModel::dataChanged() (or
QAbstractItemModel::reset()) in setCurrentSlice() instead of that
model reset hack.
--
[ signature omitted ]