⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 q3listview.cpp

📁 qt-x11-opensource-src-4.1.4.tar.gz源码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
/*!    Constructs a new top-level list view item in the Q3ListView \a    parent, with up to eight constant strings, \a label1, \a label2, \a    label3, \a label4, \a label5, \a label6, \a label7 and \a label8    defining its columns' contents.    \sa setText()*/Q3ListViewItem::Q3ListViewItem(Q3ListView * parent,                              const QString &label1,                              const QString &label2,                              const QString &label3,                              const QString &label4,                              const QString &label5,                              const QString &label6,                              const QString &label7,                              const QString &label8){    init();    parent->insertItem(this);    setText(0, label1);    setText(1, label2);    setText(2, label3);    setText(3, label4);    setText(4, label5);    setText(5, label6);    setText(6, label7);    setText(7, label8);}/*!    Constructs a new list view item as a child of the Q3ListViewItem \a    parent with up to eight constant strings, \a label1, \a label2, \a    label3, \a label4, \a label5, \a label6, \a label7 and \a label8    as columns' contents.    \sa setText()*/Q3ListViewItem::Q3ListViewItem(Q3ListViewItem * parent,                              const QString &label1,                              const QString &label2,                              const QString &label3,                              const QString &label4,                              const QString &label5,                              const QString &label6,                              const QString &label7,                              const QString &label8){    init();    parent->insertItem(this);    setText(0, label1);    setText(1, label2);    setText(2, label3);    setText(3, label4);    setText(4, label5);    setText(5, label6);    setText(6, label7);    setText(7, label8);}/*!    Constructs a new list view item in the Q3ListView \a parent that is    included after item \a after and that has up to eight column    texts, \a label1, \a label2, \a label3, \a label4, \a label5, \a    label6, \a label7 and\a label8.    Note that the order is changed according to Q3ListViewItem::key()    unless the list view's sorting is disabled using    Q3ListView::setSorting(-1).    \sa setText()*/Q3ListViewItem::Q3ListViewItem(Q3ListView * parent, Q3ListViewItem * after,                              const QString &label1,                              const QString &label2,                              const QString &label3,                              const QString &label4,                              const QString &label5,                              const QString &label6,                              const QString &label7,                              const QString &label8){    init();    parent->insertItem(this);    moveToJustAfter(after);    setText(0, label1);    setText(1, label2);    setText(2, label3);    setText(3, label4);    setText(4, label5);    setText(5, label6);    setText(6, label7);    setText(7, label8);}/*!    Constructs a new list view item as a child of the Q3ListViewItem \a    parent. It is inserted after item \a after and may contain up to    eight strings, \a label1, \a label2, \a label3, \a label4, \a    label5, \a label6, \a label7 and \a label8 as column entries.    Note that the order is changed according to Q3ListViewItem::key()    unless the list view's sorting is disabled using    Q3ListView::setSorting(-1).    \sa setText()*/Q3ListViewItem::Q3ListViewItem(Q3ListViewItem * parent, Q3ListViewItem * after,                              const QString &label1,                              const QString &label2,                              const QString &label3,                              const QString &label4,                              const QString &label5,                              const QString &label6,                              const QString &label7,                              const QString &label8){    init();    parent->insertItem(this);    moveToJustAfter(after);    setText(0, label1);    setText(1, label2);    setText(2, label3);    setText(3, label4);    setText(4, label5);    setText(5, label6);    setText(6, label7);    setText(7, label8);}/*!    Sorts all this item's child items using the current sorting    configuration (sort column and direction).    \sa enforceSortOrder()*/void Q3ListViewItem::sort(){    if (!listView())         return;    lsc = Unsorted;    enforceSortOrder();    listView()->triggerUpdate();}/*!    Returns 0.    Make your derived classes return their own values for rtti(), so    that you can distinguish between different kinds of list view    items. You should use values greater than 1000 to allow for    extensions to this class.*/int Q3ListViewItem::rtti() const{    return RTTI;}/*    Performs the initializations that's common to the constructors.*/void Q3ListViewItem::init(){    ownHeight = 0;    maybeTotalHeight = -1;    open = false;    nChildren = 0;    parentItem = 0;    siblingItem = childItem = 0;    columns = 0;    selected = 0;    selectable = true;    lsc = Unsorted;    lso = true; // unsorted in ascending order :)    configured = false;    expandable = false;    selectable = true;    is_root = false;    allow_drag = false;    allow_drop = false;    visible = true;    renameBox = 0;    enabled = true;    mlenabled = false;}/*!    If \a b is true, the item is made visible; otherwise it is hidden.    If the item is not visible, itemAbove() and itemBelow() will never    return this item, although you still can reach it by using e.g.    Q3ListViewItemIterator.*/void Q3ListViewItem::setVisible(bool b){    if (b == (bool)visible)        return;    Q3ListView *lv = listView();    if (!lv)        return;    if (b && parent() && !parent()->isVisible())        return;    visible = b;    configured = false;    setHeight(0);    invalidateHeight();    if (parent())        parent()->invalidateHeight();    else        lv->d->r->invalidateHeight();    for (Q3ListViewItem *i = childItem; i; i = i->siblingItem)        i->setVisible(b);    if (lv)        lv->triggerUpdate();}/*!    Returns true if the item is visible; otherwise returns false.    \sa setVisible()*/bool Q3ListViewItem::isVisible() const{    return (bool)visible;}/*!    If \a b is true, this item can be in-place renamed in the column    \a col by the user; otherwise it cannot be renamed in-place.*/void Q3ListViewItem::setRenameEnabled(int col, bool b){    Q3ListViewPrivate::ItemColumnInfo * l = (Q3ListViewPrivate::ItemColumnInfo*)columns;    if (!l) {        l = new Q3ListViewPrivate::ItemColumnInfo;        columns = (void*)l;    }    for(int c = 0; c < col; c++) {        if (!l->next)            l->next = new Q3ListViewPrivate::ItemColumnInfo;        l = l->next;    }    if (!l)        return;    l->allow_rename = b;}/*!    Returns true if this item can be in-place renamed in column \a    col; otherwise returns false.*/bool Q3ListViewItem::renameEnabled(int col) const{    Q3ListViewPrivate::ItemColumnInfo * l = (Q3ListViewPrivate::ItemColumnInfo*)columns;    if (!l)        return false;    while(col && l) {        l = l->next;        col--;    }    if (!l)        return false;    return (bool)l->allow_rename;}/*!    If \a b is true the item is enabled; otherwise it is disabled.    Disabled items are drawn differently (e.g. grayed-out) and are not    accessible by the user.*/void Q3ListViewItem::setEnabled(bool b){    if ((bool)enabled == b)        return;    enabled = b;    if (!enabled)        selected = false;    Q3ListView *lv = listView();    if (lv) {        lv->triggerUpdate();#ifndef QT_NO_ACCESSIBILITY    QAccessible::updateAccessibility(lv->viewport(), indexOfItem(this), QAccessible::StateChanged);#endif    }}/*!    Returns true if this item is enabled; otherwise returns false.    \sa setEnabled()*/bool Q3ListViewItem::isEnabled() const{    return (bool)enabled;}/*!    If in-place renaming of this item is enabled (see    renameEnabled()), this function starts renaming the item in column    \a col, by creating and initializing an edit box.*/void Q3ListViewItem::startRename(int col){    if (!renameEnabled(col))        return;    if (renameBox)        cancelRename(col);    Q3ListView *lv = listView();    if (!lv)        return;    if (lv->d->renameTimer)        lv->d->renameTimer->stop();    lv->ensureItemVisible(this);    if (lv->d->timer->isActive()) {        // make sure that pending calculations get finished        lv->d->timer->stop();        lv->updateContents();    }    if (lv->currentItem() && lv->currentItem()->renameBox) {        if (lv->d->defRenameAction == Q3ListView::Reject)            lv->currentItem()->cancelRename(lv->currentItem()->renameCol);        else            lv->currentItem()->okRename(lv->currentItem()->renameCol);    }    if (this != lv->currentItem())        lv->setCurrentItem(this);    QRect r = lv->itemRect(this);    r = QRect(lv->viewportToContents(r.topLeft()), r.size());    r.setLeft(lv->header()->sectionPos(col));    r.setWidth(qMin(lv->header()->sectionSize(col) - 1,                    lv->contentsX() + lv->visibleWidth() - r.left()));    if (col == 0)        r.setLeft(r.left() + lv->itemMargin() + (depth() + (lv->rootIsDecorated() ? 1 : 0)) * lv->treeStepSize() - 1);    if (pixmap(col))        r.setLeft(r.left() + pixmap(col)->width());    if (r.x() - lv->contentsX() < 0) {        lv->scrollBy(r.x() - lv->contentsX(), 0);        r.setX(lv->contentsX());    } else if ((lv->contentsX() + lv->visibleWidth()) < (r.x() + r.width())) {        lv->scrollBy((r.x() + r.width()) - (lv->contentsX() + lv->visibleWidth()), 0);    }    if (r.width() > lv->visibleWidth())        r.setWidth(lv->visibleWidth());    renameBox = new QLineEdit(lv->viewport(), "qt_renamebox");    renameBox->setFrame(false);    renameBox->setText(text(col));    renameBox->selectAll();    renameBox->installEventFilter(lv);    lv->addChild(renameBox, r.x(), r.y());    renameBox->resize(r.size());    lv->viewport()->setFocusProxy(renameBox);    renameBox->setFocus();    renameBox->show();    renameCol = col;}/*!    This function removes the rename box.*/void Q3ListViewItem::removeRenameBox(){    // Sanity, it should be checked by the functions calling this first anyway    Q3ListView *lv = listView();    if (!lv || !renameBox)        return;    const bool resetFocus = lv->viewport()->focusProxy() == renameBox;    delete renameBox;    renameBox = 0;    if (resetFocus) {        lv->viewport()->setFocusProxy(lv);        lv->setFocus();    }}/*!    This function is called if the user presses Enter during in-place    renaming of the item in column \a col.    \sa cancelRename()*/void Q3ListViewItem::okRename(int col){    Q3ListView *lv = listView();    if (!lv || !renameBox)        return;    setText(col, renameBox->text());    removeRenameBox();    // we set the parent lsc to Unsorted if that column is the sorted one    if (parent() && (int)parent()->lsc == col)        parent()->lsc = Unsorted;    emit lv->itemRenamed(this, col);    emit lv->itemRenamed(this, col, text(col));}/*!    This function is called if the user cancels in-place renaming of    this item in column \a col (e.g. by pressing Esc).    \sa okRename()*/void Q3ListViewItem::cancelRename(int){    Q3ListView *lv = listView();    if (!lv || !renameBox)        return;    removeRenameBox();}/*!    Destroys the item, deleting all its children and freeing up all    allocated resources.*/Q3ListViewItem::~Q3ListViewItem(){    if (renameBox) {        delete renameBox;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -