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