1

我正在使用 q3Table。我想通过双击标题的边缘将列宽扩展到最大项目宽度

在尝试连接到 h3Header::sectionHandleDoubleClicked 时

我在 Q3Table 代码中发现它覆盖了标题双击事件并且不发出信号。

class Q_COMPAT_EXPORT Q3TableHeader : public Q3Header
{
void mouseDoubleClickEvent(QMouseEvent *e);
...

void Q3TableHeader::mouseDoubleClickEvent(QMouseEvent *e)
{
    if (e->button() != LeftButton)
        return;
    if (isResizing) {
        int p = real_pos(e->pos(), orientation()) + offset();
        int section = sectionAt(p);
        if (section == -1)
            return;
        section--;
        if (p >= sectionPos(count() - 1) + sectionSize(count() - 1))
            ++section;
        while (sectionSize(section) == 0)
            section--;
        if (section < 0)
            return;
        int oldSize = sectionSize(section);
        if (orientation() == Horizontal) {
            table->adjustColumn(section);
            int newSize = sectionSize(section);
            if (oldSize != newSize)
                emit sizeChange(section, oldSize, newSize);
            for (int i = 0; i < table->numCols(); ++i) {
                if (table->isColumnSelected(i) && sectionSize(i) != 0)
                    table->adjustColumn(i);
            }
        } else {
            table->adjustRow(section);
            int newSize = sectionSize(section);
            if (oldSize != newSize)
                emit sizeChange(section, oldSize, newSize);
            for (int i = 0; i < table->numRows(); ++i) {
                if (table->isRowSelected(i)  && sectionSize(i) != 0)
                    table->adjustRow(i);
            }
        }
    }
}

就像在原始的 q3Header 中一样,会发出一个信号。

void Q3Header::mouseDoubleClickEvent(QMouseEvent *e)

{

    int p = orient == Qt::Horizontal ? e->pos().x() : e->pos().y();

    p += offset();

    if(reverse())

        p = d->lastPos - p;

    int header = handleAt(p);

    if (header >= 0)

        emit sectionHandleDoubleClicked(header);

}

如何获得与 sectionHandleDoubleClicked 相同的效果?

或者我怎样才能达到这个效果?

4

0 回答 0