Changeset 561 for trunk/src/gui/itemviews/qtablewidget.cpp
- Timestamp:
- Feb 11, 2010, 11:19:06 PM (15 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
-
Property svn:mergeinfo
set to (toggle deleted branches)
/branches/vendor/nokia/qt/4.6.1 merged eligible /branches/vendor/nokia/qt/current merged eligible /branches/vendor/trolltech/qt/current 3-149
-
Property svn:mergeinfo
set to (toggle deleted branches)
-
trunk/src/gui/itemviews/qtablewidget.cpp
r2 r561 2 2 ** 3 3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). 4 ** Contact: Qt Software Information (qt-info@nokia.com) 4 ** All rights reserved. 5 ** Contact: Nokia Corporation (qt-info@nokia.com) 5 6 ** 6 7 ** This file is part of the QtGui module of the Qt Toolkit. … … 21 22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. 22 23 ** 23 ** In addition, as a special exception, Nokia gives you certain 24 ** additional rights. These rights are described in the Nokia Qt LGPL 25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this 26 ** package. 24 ** In addition, as a special exception, Nokia gives you certain additional 25 ** rights. These rights are described in the Nokia Qt LGPL Exception 26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. 27 27 ** 28 28 ** GNU General Public License Usage … … 34 34 ** met: http://www.gnu.org/copyleft/gpl.html. 35 35 ** 36 ** If you are unsure which license is appropriate for your use, please37 ** contact the sales department at qt-sales@nokia.com.36 ** If you have questions regarding the use of this file, please contact 37 ** Nokia at qt-info@nokia.com. 38 38 ** $QT_END_LICENSE$ 39 39 ** … … 227 227 itm->d->id = -1; 228 228 tableItems[i] = 0; 229 QModelIndex ind = index(itm); 230 emit dataChanged(ind, ind); 229 231 } 230 232 return itm; … … 531 533 } 532 534 533 bool QTableModel::canConvertToDouble(const QVariant &value)534 {535 switch (value.type()) {536 case QVariant::Bool:537 case QVariant::Int:538 case QVariant::UInt:539 case QVariant::LongLong:540 case QVariant::ULongLong:541 case QVariant::Double:542 case QVariant::Char:543 return true;544 default:545 return false;546 }547 return false;548 }549 550 551 535 /* 552 536 \internal … … 588 572 vit = sortedInsertionIterator(vit, colItems.end(), order, item); 589 573 int newRow = qMax((int)(vit - colItems.begin()), 0); 574 if ((newRow < oldRow) && !(*item < *colItems.at(oldRow - 1)) && !(*colItems.at(oldRow - 1) < *item)) 575 newRow = oldRow; 590 576 vit = colItems.insert(vit, item); 591 577 if (newRow != oldRow) { … … 1411 1397 { 1412 1398 const QVariant v1 = data(Qt::DisplayRole), v2 = other.data(Qt::DisplayRole); 1413 if (QTableModel::canConvertToDouble(v1) && QTableModel::canConvertToDouble(v2)) 1414 return v1.toDouble() < v2.toDouble(); 1415 return v1.toString() < v2.toString(); 1399 return QAbstractItemModelPrivate::variantLessThan(v1, v2); 1416 1400 } 1417 1401 … … 1507 1491 1508 1492 \ingroup model-view 1509 \mainclass 1493 1510 1494 1511 1495 Table widgets provide standard table display facilities for applications. … … 1589 1573 QObject::connect(q, SIGNAL(entered(QModelIndex)), q, SLOT(_q_emitItemEntered(QModelIndex))); 1590 1574 // model signals 1591 QObject::connect(model (), SIGNAL(dataChanged(QModelIndex,QModelIndex)),1575 QObject::connect(model, SIGNAL(dataChanged(QModelIndex,QModelIndex)), 1592 1576 q, SLOT(_q_emitItemChanged(QModelIndex))); 1593 1577 // selection signals … … 1597 1581 q, SIGNAL(itemSelectionChanged())); 1598 1582 // sorting 1599 QObject::connect(model (), SIGNAL(dataChanged(QModelIndex,QModelIndex)),1583 QObject::connect(model, SIGNAL(dataChanged(QModelIndex,QModelIndex)), 1600 1584 q, SLOT(_q_dataChanged(QModelIndex,QModelIndex))); 1601 QObject::connect(model (), SIGNAL(columnsRemoved(QModelIndex,int,int)), q, SLOT(_q_sort()));1585 QObject::connect(model, SIGNAL(columnsRemoved(QModelIndex,int,int)), q, SLOT(_q_sort())); 1602 1586 } 1603 1587 … … 1605 1589 { 1606 1590 Q_Q(QTableWidget); 1607 if (QTableWidgetItem *item = model()->item(index))1591 if (QTableWidgetItem *item = tableModel()->item(index)) 1608 1592 emit q->itemPressed(item); 1609 1593 emit q->cellPressed(index.row(), index.column()); … … 1613 1597 { 1614 1598 Q_Q(QTableWidget); 1615 if (QTableWidgetItem *item = model()->item(index))1599 if (QTableWidgetItem *item = tableModel()->item(index)) 1616 1600 emit q->itemClicked(item); 1617 1601 emit q->cellClicked(index.row(), index.column()); … … 1621 1605 { 1622 1606 Q_Q(QTableWidget); 1623 if (QTableWidgetItem *item = model()->item(index))1607 if (QTableWidgetItem *item = tableModel()->item(index)) 1624 1608 emit q->itemDoubleClicked(item); 1625 1609 emit q->cellDoubleClicked(index.row(), index.column()); … … 1629 1613 { 1630 1614 Q_Q(QTableWidget); 1631 if (QTableWidgetItem *item = model()->item(index))1615 if (QTableWidgetItem *item = tableModel()->item(index)) 1632 1616 emit q->itemActivated(item); 1633 1617 emit q->cellActivated(index.row(), index.column()); … … 1637 1621 { 1638 1622 Q_Q(QTableWidget); 1639 if (QTableWidgetItem *item = model()->item(index))1623 if (QTableWidgetItem *item = tableModel()->item(index)) 1640 1624 emit q->itemEntered(item); 1641 1625 emit q->cellEntered(index.row(), index.column()); … … 1645 1629 { 1646 1630 Q_Q(QTableWidget); 1647 if (QTableWidgetItem *item = model()->item(index))1631 if (QTableWidgetItem *item = tableModel()->item(index)) 1648 1632 emit q->itemChanged(item); 1649 1633 emit q->cellChanged(index.row(), index.column()); … … 1654 1638 { 1655 1639 Q_Q(QTableWidget); 1656 QTableWidgetItem *currentItem = model()->item(current);1657 QTableWidgetItem *previousItem = model()->item(previous);1640 QTableWidgetItem *currentItem = tableModel()->item(current); 1641 QTableWidgetItem *previousItem = tableModel()->item(previous); 1658 1642 if (currentItem || previousItem) 1659 1643 emit q->currentItemChanged(currentItem, previousItem); … … 1663 1647 void QTableWidgetPrivate::_q_sort() 1664 1648 { 1665 Q_Q(QTableWidget);1666 1649 if (sortingEnabled) { 1667 int column = q->horizontalHeader()->sortIndicatorSection();1668 Qt::SortOrder order = q->horizontalHeader()->sortIndicatorOrder();1669 model ()->sort(column, order);1650 int column = horizontalHeader->sortIndicatorSection(); 1651 Qt::SortOrder order = horizontalHeader->sortIndicatorOrder(); 1652 model->sort(column, order); 1670 1653 } 1671 1654 } … … 1674 1657 const QModelIndex &bottomRight) 1675 1658 { 1676 Q_Q(QTableWidget);1677 1659 if (sortingEnabled && topLeft.isValid() && bottomRight.isValid()) { 1678 int column = q->horizontalHeader()->sortIndicatorSection();1660 int column = horizontalHeader->sortIndicatorSection(); 1679 1661 if (column >= topLeft.column() && column <= bottomRight.column()) { 1680 Qt::SortOrder order = q->horizontalHeader()->sortIndicatorOrder();1681 model()->ensureSorted(column, order, topLeft.row(), bottomRight.row());1662 Qt::SortOrder order = horizontalHeader->sortIndicatorOrder(); 1663 tableModel()->ensureSorted(column, order, topLeft.row(), bottomRight.row()); 1682 1664 } 1683 1665 } … … 1740 1722 This signal is emitted whenever the selection changes. 1741 1723 1742 \sa selectedItems() isItemSelected()1724 \sa selectedItems() QTableWidgetItem::isSelected() 1743 1725 */ 1744 1726 … … 1883 1865 { 1884 1866 Q_D(QTableWidget); 1885 d-> model()->setRowCount(rows);1867 d->tableModel()->setRowCount(rows); 1886 1868 } 1887 1869 … … 1893 1875 { 1894 1876 Q_D(const QTableWidget); 1895 return d->model ()->rowCount();1877 return d->model->rowCount(); 1896 1878 } 1897 1879 … … 1906 1888 { 1907 1889 Q_D(QTableWidget); 1908 d-> model()->setColumnCount(columns);1890 d->tableModel()->setColumnCount(columns); 1909 1891 } 1910 1892 … … 1916 1898 { 1917 1899 Q_D(const QTableWidget); 1918 return d->model ()->columnCount();1900 return d->model->columnCount(); 1919 1901 } 1920 1902 … … 1925 1907 { 1926 1908 Q_D(const QTableWidget); 1927 return d-> model()->index(item).row();1909 return d->tableModel()->index(item).row(); 1928 1910 } 1929 1911 … … 1934 1916 { 1935 1917 Q_D(const QTableWidget); 1936 return d-> model()->index(item).column();1918 return d->tableModel()->index(item).column(); 1937 1919 } 1938 1920 … … 1947 1929 { 1948 1930 Q_D(const QTableWidget); 1949 return d-> model()->item(row, column);1931 return d->tableModel()->item(row, column); 1950 1932 } 1951 1933 … … 1976 1958 } else { 1977 1959 item->view = this; 1978 d-> model()->setItem(row, column, item);1960 d->tableModel()->setItem(row, column, item); 1979 1961 } 1980 1962 } else { … … 1989 1971 { 1990 1972 Q_D(QTableWidget); 1991 QTableWidgetItem *item = d-> model()->takeItem(row, column);1973 QTableWidgetItem *item = d->tableModel()->takeItem(row, column); 1992 1974 if (item) 1993 1975 item->view = 0; … … 2001 1983 { 2002 1984 Q_D(const QTableWidget); 2003 return d-> model()->verticalHeaderItem(row);1985 return d->tableModel()->verticalHeaderItem(row); 2004 1986 } 2005 1987 … … 2012 1994 if (item) { 2013 1995 item->view = this; 2014 d-> model()->setVerticalHeaderItem(row, item);1996 d->tableModel()->setVerticalHeaderItem(row, item); 2015 1997 } else { 2016 1998 delete takeVerticalHeaderItem(row); … … 2025 2007 { 2026 2008 Q_D(QTableWidget); 2027 QTableWidgetItem *itm = d-> model()->takeVerticalHeaderItem(row);2009 QTableWidgetItem *itm = d->tableModel()->takeVerticalHeaderItem(row); 2028 2010 if (itm) 2029 2011 itm->view = 0; … … 2038 2020 { 2039 2021 Q_D(const QTableWidget); 2040 return d-> model()->horizontalHeaderItem(column);2022 return d->tableModel()->horizontalHeaderItem(column); 2041 2023 } 2042 2024 … … 2049 2031 if (item) { 2050 2032 item->view = this; 2051 d-> model()->setHorizontalHeaderItem(column, item);2033 d->tableModel()->setHorizontalHeaderItem(column, item); 2052 2034 } else { 2053 2035 delete takeHorizontalHeaderItem(column); … … 2062 2044 { 2063 2045 Q_D(QTableWidget); 2064 QTableWidgetItem *itm = d-> model()->takeHorizontalHeaderItem(column);2046 QTableWidgetItem *itm = d->tableModel()->takeHorizontalHeaderItem(column); 2065 2047 if (itm) 2066 2048 itm->view = 0; … … 2074 2056 { 2075 2057 Q_D(QTableWidget); 2076 QTableModel *model = d-> model();2058 QTableModel *model = d->tableModel(); 2077 2059 QTableWidgetItem *item = 0; 2078 2060 for (int i = 0; i < model->rowCount() && i < labels.count(); ++i) { … … 2092 2074 { 2093 2075 Q_D(QTableWidget); 2094 QTableModel *model = d-> model();2076 QTableModel *model = d->tableModel(); 2095 2077 QTableWidgetItem *item = 0; 2096 2078 for (int i = 0; i < model->columnCount() && i < labels.count(); ++i) { … … 2132 2114 { 2133 2115 Q_D(const QTableWidget); 2134 return d-> model()->item(currentIndex());2116 return d->tableModel()->item(currentIndex()); 2135 2117 } 2136 2118 … … 2138 2120 Sets the current item to \a item. 2139 2121 2140 Depending on the current \l{QAbstractItemView::SelectionMode}{selection mode},2141 the item mayalso be selected.2122 Unless the selection mode is \l{QAbstractItemView::}{NoSelection}, 2123 the item is also be selected. 2142 2124 2143 2125 \sa currentItem(), setCurrentCell() … … 2146 2128 { 2147 2129 Q_D(QTableWidget); 2148 setCurrentIndex(d-> model()->index(item));2130 setCurrentIndex(d->tableModel()->index(item)); 2149 2131 } 2150 2132 … … 2159 2141 { 2160 2142 Q_D(QTableWidget); 2161 d->selectionModel->setCurrentIndex(d-> model()->index(item), command);2143 d->selectionModel->setCurrentIndex(d->tableModel()->index(item), command); 2162 2144 } 2163 2145 … … 2198 2180 { 2199 2181 Q_D(QTableWidget); 2200 d->model ()->sort(column, order);2182 d->model->sort(column, order); 2201 2183 horizontalHeader()->setSortIndicator(column, order); 2202 2184 } … … 2227 2209 if (!item) 2228 2210 return; 2229 edit(d-> model()->index(item));2211 edit(d->tableModel()->index(item)); 2230 2212 } 2231 2213 … … 2240 2222 if (!item) 2241 2223 return; 2242 QModelIndex index = d-> model()->index(item);2224 QModelIndex index = d->tableModel()->index(item); 2243 2225 QAbstractItemView::openPersistentEditor(index); 2244 2226 } … … 2254 2236 if (!item) 2255 2237 return; 2256 QModelIndex index = d-> model()->index(item);2238 QModelIndex index = d->tableModel()->index(item); 2257 2239 QAbstractItemView::closePersistentEditor(index); 2258 2240 } … … 2304 2286 { 2305 2287 Q_D(const QTableWidget); 2306 QModelIndex index = d-> model()->index(item);2288 QModelIndex index = d->tableModel()->index(item); 2307 2289 return selectionModel()->isSelected(index); 2308 2290 } … … 2318 2300 { 2319 2301 Q_D(QTableWidget); 2320 QModelIndex index = d-> model()->index(item);2302 QModelIndex index = d->tableModel()->index(item); 2321 2303 selectionModel()->select(index, select ? QItemSelectionModel::Select : QItemSelectionModel::Deselect); 2322 2304 } … … 2375 2357 if (isIndexHidden(index)) 2376 2358 continue; 2377 QTableWidgetItem *item = d-> model()->item(index);2359 QTableWidgetItem *item = d->tableModel()->item(index); 2378 2360 if (item) 2379 2361 items.append(item); … … 2391 2373 QModelIndexList indexes; 2392 2374 for (int column = 0; column < columnCount(); ++column) 2393 indexes += d->model ()->match(model()->index(0, column, QModelIndex()),2375 indexes += d->model->match(model()->index(0, column, QModelIndex()), 2394 2376 Qt::DisplayRole, text, -1, flags); 2395 2377 QList<QTableWidgetItem*> items; 2396 2378 for (int i = 0; i < indexes.size(); ++i) 2397 items.append(d-> model()->item(indexes.at(i)));2379 items.append(d->tableModel()->item(indexes.at(i))); 2398 2380 return items; 2399 2381 } … … 2429 2411 { 2430 2412 Q_D(const QTableWidget); 2431 return d-> model()->item(indexAt(p));2413 return d->tableModel()->item(indexAt(p)); 2432 2414 } 2433 2415 … … 2440 2422 if (!item) 2441 2423 return QRect(); 2442 QModelIndex index = d-> model()->index(const_cast<QTableWidgetItem*>(item));2424 QModelIndex index = d->tableModel()->index(const_cast<QTableWidgetItem*>(item)); 2443 2425 Q_ASSERT(index.isValid()); 2444 2426 return visualRect(index); … … 2456 2438 if (!item) 2457 2439 return; 2458 QModelIndex index = d-> model()->index(const_cast<QTableWidgetItem*>(item));2440 QModelIndex index = d->tableModel()->index(const_cast<QTableWidgetItem*>(item)); 2459 2441 Q_ASSERT(index.isValid()); 2460 2442 QTableView::scrollTo(index, hint); … … 2469 2451 { 2470 2452 Q_D(const QTableWidget); 2471 return d-> model()->itemPrototype();2453 return d->tableModel()->itemPrototype(); 2472 2454 } 2473 2455 … … 2477 2459 The table widget will use the item prototype clone function when it needs 2478 2460 to create a new table item. For example when the user is editing 2479 editingin an empty cell. This is useful when you have a QTableWidgetItem2461 in an empty cell. This is useful when you have a QTableWidgetItem 2480 2462 subclass and want to make sure that QTableWidget creates instances of 2481 2463 your subclass. … … 2488 2470 { 2489 2471 Q_D(QTableWidget); 2490 d-> model()->setItemPrototype(item);2472 d->tableModel()->setItemPrototype(item); 2491 2473 } 2492 2474 … … 2497 2479 { 2498 2480 Q_D(QTableWidget); 2499 d-> model()->insertRows(row);2481 d->tableModel()->insertRows(row); 2500 2482 } 2501 2483 … … 2506 2488 { 2507 2489 Q_D(QTableWidget); 2508 d-> model()->insertColumns(column);2490 d->tableModel()->insertColumns(column); 2509 2491 } 2510 2492 … … 2515 2497 { 2516 2498 Q_D(QTableWidget); 2517 d-> model()->removeRows(row);2499 d->tableModel()->removeRows(row); 2518 2500 } 2519 2501 … … 2524 2506 { 2525 2507 Q_D(QTableWidget); 2526 d-> model()->removeColumns(column);2508 d->tableModel()->removeColumns(column); 2527 2509 } 2528 2510 … … 2537 2519 Q_D(QTableWidget); 2538 2520 selectionModel()->clear(); 2539 d-> model()->clear();2521 d->tableModel()->clear(); 2540 2522 } 2541 2523 … … 2551 2533 Q_D(QTableWidget); 2552 2534 selectionModel()->clear(); 2553 d-> model()->clearContents();2535 d->tableModel()->clearContents(); 2554 2536 } 2555 2537 … … 2562 2544 QStringList QTableWidget::mimeTypes() const 2563 2545 { 2564 return d_func()-> model()->QAbstractTableModel::mimeTypes();2546 return d_func()->tableModel()->QAbstractTableModel::mimeTypes(); 2565 2547 } 2566 2548 … … 2575 2557 QMimeData *QTableWidget::mimeData(const QList<QTableWidgetItem*>) const 2576 2558 { 2577 return d_func()-> model()->internalMimeData();2559 return d_func()->tableModel()->internalMimeData(); 2578 2560 } 2579 2561 … … 2597 2579 } 2598 2580 #endif 2599 return d_func()-> model()->QAbstractTableModel::dropMimeData(data, action , row, column, idx);2581 return d_func()->tableModel()->QAbstractTableModel::dropMimeData(data, action , row, column, idx); 2600 2582 } 2601 2583 … … 2607 2589 Qt::DropActions QTableWidget::supportedDropActions() const 2608 2590 { 2609 return d_func()-> model()->QAbstractTableModel::supportedDropActions() | Qt::MoveAction;2591 return d_func()->tableModel()->QAbstractTableModel::supportedDropActions() | Qt::MoveAction; 2610 2592 } 2611 2593 … … 2631 2613 { 2632 2614 Q_D(const QTableWidget); 2633 return d-> model()->index(item);2615 return d->tableModel()->index(item); 2634 2616 } 2635 2617 … … 2641 2623 { 2642 2624 Q_D(const QTableWidget); 2643 return d-> model()->item(index);2625 return d->tableModel()->item(index); 2644 2626 } 2645 2627
Note:
See TracChangeset
for help on using the changeset viewer.