为了做一个多选项的表格,花了好多力气,走了好多弯路。其中的,selectRow(int)把我差点儿害死了。
qt的qtablewidget封装得很好,正因为如此,它非常的消耗时间,也非常消耗资源。尤其以selectRow(int)为代表。
selectRow(int)其实使用很方便,如果需要选择的数据两很小,几十条,一两百条还是不错了。但当数据达到400~500条的时候就感觉到它相当相当的缓慢了。甚至可以导致程序卡在界面上不动。
界面卡住,可用性就不高了。
为了解决这个问题,幸好qt 4.6 版本还做了其他准备来弥补这个不足。
setRangeSelected(QTableWidgetSelectionRange , bool );
这个是区域选择,你可以根据你的需要进行不定的选择。
qt文档上原话是这样的:void QTableWidget::setRangeSelected ( const QTableWidgetSelectionRange & range, bool select )Selects or deselects the range depending on select.
QTableWidgetSelectionRange ( int top, int left, int bottom, int right )Constructs the table selection range from the given top, left, bottom and right table rows and columns.
其实它解释得不怎么恰当。
bottom - top = 选择的行数。
right - left = 选择的列数。
就像这样:
试试看,好用吧?! 还有,使用selectedRanges(),与使用
selectedIndexes ()一样好用,并且selectedRanges()还不是protected的呢。利用旗下的bottomRow(),columnCount(),leftColumn(), rightColumn(),rowCount(),topRow()完全可以达到你要的效果。[ 此帖被many_many在2010-05-04 14:29重新编辑 ]